다음 시나리오를 사용하십시오. 개체가 들어있는 목록에 바인딩 된 DataGrid가 있습니다. 각 객체는 다양한 데이터 (이름, 고객, 서버 이름 등)가있는 행을 나타냅니다. 이제는 동일한 객체 또는 행 (이름, 고객, 서버 이름 등)이 동일 할 수 있다고 가정 해 봅시다.Overriden IsEqual 메서드를 사용하여 목록에 바인딩 할 때 DataGrid ID 문제가 발생했습니다.
목록을 DataGrid에 바인딩하면 모든 것이 잘 작동하고 커서로 표를 이동할 수 있습니다. 그러나 UnitTests를 만들기 위해 문제의 개체에 대한 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();
}
이제 문제는 내가이 개 정확히 동일한 행이와 Equals 메서드가 호출되면, 데이터 그리드 혼란 가져옵니다과 여러 행을 선택하거나 내가 그리드를 통해 이동이 더욱 혼란 가져옵니다.
따라서 질문 : 그러한 문제가 발생하지 않도록 적절한 평등 비교 방법을 사용할 수 있습니까?
팁 주셔서 감사합니다! 나는 그걸 조금 더 가지고 놀 것이다 ... GetHashCode 메서드를 재정의하는 방법 : 나는 그걸 잘 해냈다.하지만 내 게시물에 그것을 추가하는 것을 잊어 버렸다. 이제 끝났어! – Artimidor