Assert.Equals实现IEquatable(T)的两个对象不使用equals方法

Bor*_*ens 8 .net mstest

我有一个实现IEquatable(Type)的自定义类型Type.然后我新建了两个类型的实例,它们都不是Null

Assert.IsTrue(obj1.equals(obj2)) //Success
Assert.AreEqual(obj1, obj2) //False
Assert.AreEqual(Type)(obj1, obj2) //False
Run Code Online (Sandbox Code Playgroud)

第一个命中我的等号,第二个击中ToString()任何建议?

更新
一些代码来说明:http://pastebin.com/1uecrfeW

更新
如果我必须覆盖基本等于,即使有更好的(通用)等于可用,那么实现IEquals(T)的用途是什么?

Jon*_*eet 6

我的猜测是,它实际上是打击Equals(object)而不是Equals(T).如果你没有覆盖Equals(object)那么它可能会使断言失败,然后断言ToString用于创建有用的失败消息.

如果你能展示一个简短但完整的程序来证明问题(包括Assert你正在调用哪种方法--NUnit?还有其他什么?)这会有所帮助.