【发布时间】:2019-03-17 13:36:36
【问题描述】:
有一个微不足道的继承
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 接口,则集合重载也应该使用该接口并且不比较类型。如何获得想要的行为?
【问题讨论】:
-
如果这条线索死了,我建议在 xunit github 上询问
标签: c# .net collections xunit xunit.net