Имея тривиальное наследование
private class TestBase : IEquatable<TestBase> {
public string Name { get; set; } = "test1";
public bool Equals(TestBase other) => this.Name == other.Name;
}
private class Test : TestBase {}
Мне нужно сравнить две коллекции:
var s1 = new TestBase();
var s2 = new Test();
Assert.Equal(s1, s2); // OK, uses IEquatable
Assert.StrictEqual(s1, s2); // OK uses IEquatable
Assert.Equal(new[] { s1 }, new[] { s2 }); // fails
Assert.Equal<IEnumerable<TestBase>>(new[] { s1 }, new[] { s2 }); // fails
Assert.Equal(new TestBase[] { s1 }, new TestBase[] { s2 }); // fails
Для меня, если Assert.Equal()
для одного экземпляра использует IEquatable
интерфейс коллекцииПерегрузка должна также использовать интерфейс и не сравнивать типы.Как получить желаемое поведение?