簡體   English   中英

Assert.Equals實現IEquatable(T)的兩個對象不使用equals方法

[英]Assert.Equals of Two objects implementing IEquatable(T) doesn't use the equals method

我有一個實現IEquatable(Type)的自定義類型Type。 然后我新建了兩個類型的實例,它們都不是Null

Assert.IsTrue(obj1.equals(obj2)) //Success
Assert.AreEqual(obj1, obj2) //False
Assert.AreEqual(Type)(obj1, obj2) //False

第一個命中我的等號,第二個擊中ToString()任何建議?

更新
一些代碼來說明: http//pastebin.com/1uecrfeW

更多更新
如果我必須覆蓋基數等於,即使有更好的(通用)等於,那么實現IEquals(T)的用途是什么?

我的猜測是它實際上擊中了Equals(object)而不是Equals(T) 如果你還沒有重寫Equals(object)那么它可能會使斷言失敗,然后使用ToString創建一個有用的失敗消息。

如果你能展示一個簡短而完整的程序來演示問題(包括你正在調用的Assert方法 - NUnit?還有其他什么?)這會有所幫助。

IIRC Assert.AreEqual是非泛型的,因此只有object.Equals適用; 嘗試檢查非泛型object.Equals的覆蓋。

除了通過反射調用泛型方法的不便之外,對象還可以實現多個 IEquatable<T> (針對不同的T)。 所以非通用版本在這里有意義,IMO。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM