Mat*_*nes 7 c# class-design .net-3.5
我有一个域模型,由以下代表.
IMyInterface
ClassA : IMyInterface
ClassB : IMyInterface
Run Code Online (Sandbox Code Playgroud)
我想要的是以这样的方式实现IEquatable,我可以编写类似的代码.
if(dynamicallyCreatedInstanceOfClassA == dynamicallyCreatedinstanceOfClassB)
{
// Do something relevant
}
Run Code Online (Sandbox Code Playgroud)
我的第一个倾向是让IMyInterface实现IEquatable,但当然我实际上无法在IMyInterface中实现.我必须在ClassA和ClassB中这样做.这个解决方案让我觉得错误的是,ClassA和ClassB中IEquatable的实现将完全相同,行相同.有一种优雅的方式来实现这一目标吗?当ClassC出现时,我不想复制和过去50行重复的IEquatable代码.
我考虑使用抽象基类而不是接口,但在这种情况下,IMyInterface实际上只描述了类将执行的操作而不是类.ClassA和ClassB不共享许多相似之处,除非它们都可以执行IMyInterface合同中的操作.
任何见解都有帮助,谢谢你的时间.
IEquatable<T>你可以IEqualityComparer<T>在一个单独的类中实现,而不是实现吗?在大多数情况下,你对等式感兴趣,你可以指定一个比较器,我怀疑它会更清洁.
根据您的问题,您似乎知道Equals算法将是什么,并且ClassA和ClassB将完全相同.为什么不这样做呢
IEquatable<IMyInterface>IEquatable<IMyInterface>实现| 归档时间: |
|
| 查看次数: |
1767 次 |
| 最近记录: |