MVVMパターンの2つの型の間の関係を保存したいので、私は型の辞書(Dictionary)をカスタムのcomparerで使用しています。カスタムEqualityComparerが動作します。EqualityComparer <Type> GetHashCode and Equals
私は、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();
}
}
この質問には説明が必要です。あなたは辞書にはないキーXにアクセスし、キーX 'を持っていれば、それは後の値を返すはずであることを辞書に伝えようとしていますか?もしそうなら、すでに辞書にある他のキーに割り当て可能なキーを追加できないことに気づいていますか? –
あなたは仕事に間違ったツールを使用しようとしていると感じています(間違っているかもしれませんが)。あなたはこれで達成しようとしていることを説明できますか? –
MVVMと辞書それはコードのにおいです。最初に、代わりにKeyedCollectionsに切り替えるか、キー付きコレクションの必要性を完全に取り除くことをお勧めします。あなたが見たいと思っているものは...確かではありません。 – Will