簡體   English   中英

在您無權訪問的第三方類型上實現Equals和GetHashCode的最干凈/最佳方法是什么?

[英]Whats the cleanest/best way to implement Equals and GetHashCode on 3rd party types you don't have access to?

問題是您有第三方類型,例如下面的ClassA。 我沒有訪問代碼的權限,並且沒有實現Equals和GetHashCode,因此我需要編寫一個包裝類。 Equals和GetHashCode隱式函數應使用所有私有成員字段。

最好的方法是什么? 我應該使用快捷方式還是模式?

謝謝

public class ClassA
{
    public int FieldA {get; set;}
    public double FieldB { get; set; }
    public string FieldC { get; set; }
}

如果需要將ClassA用作字典鍵,則可以實現自己的實現IEqualityComparer<ClassA> ,並將其傳遞給字典的構造函數。 這使您可以覆蓋類型的GetHashCodeEquals方法。

我將從ClassA繼承並覆蓋EqualsGetHashCode

您將需要基於公共屬性來實現,因為您無法訪問私有字段。

從ClassA繼承您自己的類,然后在其中實現GetHashCode和Equals。

按照上面的Griver和Driis-繼承或聚合ClassA並基於a屬性實現Equals。

MSDN 在此處發布一些准則

暫無
暫無

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

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