如何为多接口类型编写值相等重载的包装函数?
基于接口层面实现通用值相等判断的实践
最近我在给自定义类型编写值相等逻辑的时候,突然灵光一闪——与其在每个具体类里重复实现Equals方法,不如把相等判断逻辑抽离到接口层面来统一处理!
我写了一个静态工具类EqHelper,里面为每个需要实现相等性的接口单独提供了Eq静态方法:
class EqHelper { public static bool Eq(I1 x, I1 y) { ... } public static bool Eq(I2 x, I2 y) { ... } public static bool Eq(I3 x, I3 y) { ... } }
这里的I1、I2、I3都是接口类型,而非具体的类。这么做的核心优势在于:不管哪个类实现了这些接口,我都能在代码的任意位置直接调用EqHelper.Eq(x, y)来完成相等性校验,完全不用关心背后的具体实现类是什么。
比如,如果I1接口定义了几个需要参与相等判断的核心属性,那EqHelper.Eq(I1 x, I1 y)里就可以直接对比这些属性的值是否一致——所有实现I1的类都能复用这一段逻辑,再也不用在每个类里复制粘贴相似的相等判断代码,后续维护起来也省心很多。
内容的提问来源于stack exchange,提问作者Clinton
相关产品推荐
相关产品推荐

