C# 第三方库中类的相等函数放在哪里?
我正在使用一个第三方库,其中包含一个同时缺少运算符==()和Equals()的类。我想自己实现一个,但我不知道如何命名它以及放在哪里。我尝试添加这两个操作符作为扩展方法,但都失败了。我现在编写了一个IsEqualTo()函数,但它会导致相当混乱的客户端代码。有人知道更优雅的解决方案吗 是否可以从第三方类继承或包装该类?您将无法重载C# 第三方库中类的相等函数放在哪里?,c#,equality,C#,Equality,我正在使用一个第三方库,其中包含一个同时缺少运算符==()和Equals()的类。我想自己实现一个,但我不知道如何命名它以及放在哪里。我尝试添加这两个操作符作为扩展方法,但都失败了。我现在编写了一个IsEqualTo()函数,但它会导致相当混乱的客户端代码。有人知道更优雅的解决方案吗 是否可以从第三方类继承或包装该类?您将无法重载==运算符,但您可以创建一个IEqualityComparer,该运算符可用于字典等 虽然您可以编写一个Equals扩展方法,但它永远不会被使用,因为Object上的虚
==
运算符,但您可以创建一个IEqualityComparer
,该运算符可用于字典等
虽然您可以编写一个Equals
扩展方法,但它永远不会被使用,因为Object
上的虚拟方法总是适用的,如果有一个适用的实例方法,即使有更具体的扩展方法,编译器也不会寻找扩展方法
您可能希望将您的
IsEqualTo
方法重命名为ValueEquals
或类似的名称。。。但是我同意它仍然不理想。Hm,我怀疑它是否会使客户端代码更清晰,因为我必须始终记住在调用比较函数之前包装实例,就像我现在必须记住调用我自己的IsEqualTo()一样函数而不是默认的比较函数。我的意思是:不要在代码中使用第三方类。始终使用包装器。确实,这是一个选项,但在与库接口时需要来回转换实例。虽然可行,但它会导致大量开销。