繁体   English   中英

在第三方库中将类的相等函数放在何处?

[英]Where to put the equality function for a class in a third party library?

我正在使用第三方库,其中包含缺少operator ==()和Equals()的类。 我想自己实现一个,但我不确定如何命名以及放在哪里。 我试图将两个运算符添加为扩展方法,但都失败了。 我现在写了一个IsEqualTo()函数,但它导致相当混乱的客户端代码。 有谁知道更优雅的解决方案?

是继承或包装第三方课程的选择吗?

您将无法重载==运算符,但您可以创建可用于字典等的IEqualityComparer<T>

虽然您可以编写Equals扩展方法,但它永远不会被使用,因为Object上的虚方法总是适用,如果有适用的实例方法,编译器即使有更具体的方法也不会查找扩展方法。

您可能希望将IsEqualTo方法重命名为ValueEquals或类似的东西......但我同意它仍然不理想。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM