以下に示すように定義されたクラスがあるとしましょう。ここで、このクラスをさらに変更してNotifyPropertyChangedを正しく実装し、WPFグリッドにバインドするコレクションに追加するとします。これらのインスタンスの1つのNameまたはDescriptionプロパティを変更するコードが実行された場合、他のインスタンスも更新されますか?WPF / XAMLバインディングは、これらを同じオブジェクトと見なしますか、それともインスタンスを異なるものとして扱い、変更されたオブジェクトのプロパティのみを更新しますか?
class Security
{
public string Ticker { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public override bool Equals(object obj)
{
if (obj == null) return false;
if (this.GetType() != obj.GetType()) return false;
Security security = (Security)obj;
//reference check
//if (!Object.Equals(Ticker, security.Ticker)) return false;
//value member check
if (!Ticker.Equals(security.Ticker)) return false;
return true;
}
public static bool operator ==(Security sec1, Security sec2)
{
if (System.Object.ReferenceEquals(sec1, sec2)) return true;
if (((object)sec1 == null) || ((object)sec2 == null)) return false;
// Return true if the fields match:
return sec1.Ticker == sec2.Ticker;
}
public static bool operator !=(Security sec1, Security sec2)
{
return !(sec1 == sec2);
}
public override int GetHashCode()
{
unchecked
{
int hash = 17;
// Suitable nullity checks etc, of course :)
hash = hash * 23 + Ticker.GetHashCode();
hash = hash * 23 + Ticker.GetHashCode();
hash = hash * 23 + Ticker.GetHashCode();
return hash;
}
}
}