次のシナリオを示します。オブジェクトを含むリストにバインドしたDataGridがあります。各オブジェクトは、さまざまなデータ(名前、顧客、サーバー名など)を持つ行を表します。次に、同一のオブジェクトまたは行(名前、顧客、サーバー名など)が同一である可能性があるとします。オーバーライドされたIsEqualメソッドを使用してリストにバインドすると、DataGridのIDの問題が発生する可能性があります。
私はデータグリッドのすべてにリストを結合し正常に動作し、私は私のカーソルでグリッドを移動することができます。しかし、UnitTestを作成するために、問題のオブジェクトのEqualsメソッドをオーバーライドしました。このように:
public override bool Equals(object obj2)
{
ConnectionDestination compareObject = obj2 as ConnectionDestination;
if (compareObject == null)
{
return false;
}
if ((this.Kunde != compareObject.Kunde) || this.Filiale != compareObject.Filiale || this.Bez != compareObject.Bez ||
this.Username != compareObject.Username || this.Password != compareObject.Password)
{
return false;
}
}
public override int GetHashCode()
{
return this.Kunde.GetHashCode()^this.Bez.GetHashCode()^this.Filiale.GetHashCode()^this.Servername.GetHashCode()^this.Username.GetHashCode()^this.Password.GetHashCode();
}
今の問題は、私は2つの全く同じ行を持っているとequalsメソッドが呼び出されると、データグリッドが混乱してしまうことで、複数の行を選択したか、私は、グリッド内を移動することはさらに混沌となります。
したがって、質問:このような問題が発生しないように、適切な等価比較を行う方法はありますか?
ヒントのおかげで、HCL!私はもう少し詳しく試してみましょう... GetHashCodeメソッドをオーバーライドする方法は次のとおりです。これもやっていますが、投稿に追加するのを忘れてしまいました。今終わった! – Artimidor