我有一個自定義比較器的類型(字典)的詞典,因爲我們想要存儲2個給定類型之間的關係(對於MVVM模式),我需要幫助以一種方式獲得自定義EqualityComparer工作。EqualityComparer <Type> GetHashCode和等於
做了一些研究,我發現GetHashCode方法在Equals方法之前被調用,我怎麼才能得到哈希碼?,預期的行爲,如果我試圖從我的字典中得到一個「Square」一個「GeometricShape」已經在這,它返回「GeometricShape」的價值,我不能找到一種方法來散列它,我給出了預期的結果
public class DictionaryComparer : EqualityComparer<Type>
{
public override bool Equals(Type x, Type y)
{
return x.IsAssignableFromType(y);
}
public override int GetHashCode(Type obj)
{
return obj.GetHashCode();
}
}
這個問題需要一些澄清。你是否試圖告訴Dictionary,如果你訪問關鍵字X(不在Dictionary上)並且它有關鍵字X',它應該返回以後的值?如果是這樣,您是否意識到您將無法添加可分配給字典中已有的其他密鑰的密鑰? –
我有一種感覺(儘管我可能是錯的),您正嘗試使用錯誤的工具來完成這項工作。你能解釋一下你試圖用這個做什麼嗎? –
MVVM和字典。這是一種代碼味道。我首先建議你切換到KeyedCollections,或者完全不需要鍵控集合。至於你想要什麼......不確定。 – Will