Assert.AreEqual не использует мои переопределения .Equals в реализации IEnumerable

У меня есть класс PagedModel, который реализует IEnumerable, чтобы просто возвращать ModelData, игнорируя данные подкачки. Я также переопределил Equals и GetHashCode, чтобы позволить сравнивать два объекта PagedModel по их ModelData, PageNumber, TotalPages и PageSize.

Вот в чем проблема

Dim p1 As New PagedModel() With {
    .PageNumber = 1,
    .PageSize = 10,
    .TotalPages = 10,
    .ModelData = GetModelData()
}

Dim p2 As New PagedModel() With {
    .PageNumber = 1,
    .PageSize = 10,
    .TotalPages = 10,
    .ModelData = GetModelData()
}

p1.Equals(p2) =====> True
Assert.AreEqual(p1, p2) ======> False!

Похоже, что NUnit вызывает свой внутренний метод EnumerableEqual для сравнения моих PagedModel вместо использования методов Equals, которые я предоставил! Есть ли способ переопределить это поведение, или мне нужно написать собственное утверждение.

18
задан just.another.programmer 24 May 2012 в 12:07
поделиться