次のような 2 つのオブジェクトがあります。
class Container {
public HashSet<Item> Items { get; }
}
class Item {
public Container Parent { get; set; }
public string Value1 { get; set; }
public int Value2 { get; set; }
}
すべてItemのインスタンスはインスタンスに属している必要があり、2 つのContainerインスタンスの間には 1 対多の関係があり、両端で常に同期が保たれています。
の 2 つのインスタンスを比較して、と の値が一致Itemするかどうかを確認するメソッドの実装に直面しています。比較するインスタンスの各ペアはこの値が明確に異なるため、メソッドは値を考慮しません。そのため、メソッドと同じ結果 ( ) になるため、実装しているメソッドが役に立たなくなります。Value1Value2Parentfalseobject.ReferenceEquals
私の質問は次のとおりです。このメソッドをオブジェクトのpublic override bool Equals( object obj )メソッドとして (とともにGetHashCode) 実装する必要がありますか? それとも、それがそのParentプロパティを無視するという事実は、私がそうするのを妨げますか? なぜですか、そうでないのですか?私が持っている別のアイデアは、public bool EqualsIgnoreParent( Item other )何もオーバーライドしないものとして実装することです。その後、カスタム比較子から呼び出すことができました。