我使用的是一个第三方库,其中包含一个同时缺少operator==()和Equals()的类。我想自己实现一个,但我不确定如何命名它,以及将它放在哪里。我尝试将这两个运算符都添加为扩展方法,但都失败了。我现在已经编写了一个IsEqualTo()函数,但是它导致了相当混乱的客户端代码。有没有人知道更优雅的解决方案?
发布于 2011-02-18 18:03:18
是否可以从第三方类继承或包装第三方类?
发布于 2011-02-18 18:03:36
您不能重载==操作符,但您可以创建一个IEqualityComparer<T>,用于字典等操作。
虽然您可以编写Equals扩展方法,但它永远不会被使用,因为Object上的虚方法总是适用的,并且如果存在适用的实例方法,编译器就不会寻找扩展方法,即使有更具体的方法也不会。
您可能希望将IsEqualTo方法重命名为ValueEquals或类似的名称...但我同意这仍然不是很理想。
https://stackoverflow.com/questions/5039889
复制相似问题