次のような 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
するかどうかを確認するメソッドの実装に直面しています。比較するインスタンスの各ペアはこの値が明確に異なるため、メソッドは値を考慮しません。そのため、メソッドと同じ結果 ( ) になるため、実装しているメソッドが役に立たなくなります。Value1
Value2
Parent
false
object.ReferenceEquals
私の質問は次のとおりです。このメソッドをオブジェクトのpublic override bool Equals( object obj )
メソッドとして (とともにGetHashCode
) 実装する必要がありますか? それとも、それがそのParent
プロパティを無視するという事実は、私がそうするのを妨げますか? なぜですか、そうでないのですか?私が持っている別のアイデアは、public bool EqualsIgnoreParent( Item other )
何もオーバーライドしないものとして実装することです。その後、カスタム比較子から呼び出すことができました。