C# 在第三方类型上实现Equals和GetHashCode的最干净/最好的方法是什么';你没有访问的权限吗?
问题是您有第三方类型,例如下面的ClassA。我没有访问代码的权限,它也没有实现Equals和GetHashCode,因此我想我需要编写一个包装器类。Equals和GetHashCode impl应该使用所有私有成员字段 最好的方法是什么?是否有我应该使用的快捷方式或模式 谢谢C# 在第三方类型上实现Equals和GetHashCode的最干净/最好的方法是什么';你没有访问的权限吗?,c#,design-patterns,C#,Design Patterns,问题是您有第三方类型,例如下面的ClassA。我没有访问代码的权限,它也没有实现Equals和GetHashCode,因此我想我需要编写一个包装器类。Equals和GetHashCode impl应该使用所有私有成员字段 最好的方法是什么?是否有我应该使用的快捷方式或模式 谢谢 public class ClassA { public int FieldA {get; set;} public double FieldB { get; set; } public stri
public class ClassA
{
public int FieldA {get; set;}
public double FieldB { get; set; }
public string FieldC { get; set; }
}
我将从ClassA继承并重写
Equals
和GetHashCode
您需要将实现基于公共属性,因为您无法访问私有字段。我将从ClassA继承并重写
Equals
和GetHashCode
您需要将实现基于公共属性,因为您无法访问私有字段。从ClassA继承您自己的类,然后在其中实现GetHashCode和Equals。从ClassA继承您自己的类,然后在其中实现GetHashCode和Equals。如上面的Griver和Driis所述-继承或聚合ClassA并基于a实现Equals财产
MSDN根据上面的Griver和Driis发布了一些指导原则-继承或聚合ClassA并基于a属性实现Equals
MSDN发布了一些指导原则如果需要将
ClassA
用作字典键,则可以实现自己的类来实现IEqualityComparer
,并将其传递给字典的构造函数。这允许您重写类型的GetHashCode
和Equals
方法。如果需要将ClassA
用作字典键,您可以实现自己的类来实现IEqualityComparer
,并将其传递给字典的构造函数。这允许您重写类型的GetHashCode
和Equals
方法