我发现了类似的问题
如何比较具有相似属性的两个截然不同的对象 https://stackoverflow.com/questions/1725327/how-to-compare-two-distinctly-different-objects-with-similar-properties
这可能隐含地和/或部分地回答了我的问题。
假设我想比较(没有很多嵌套条件)这个对象:
class ObjectA {
public string PropertyX { get; set; }
public char PropertyY { get; set; }
public long PropertyZ { get; set; }
}
to a System.String
。我只感兴趣equality or 不等式(不是关于身份的一系列值)。
实施IEquatable<string>
in ObjectA
是一个正确的选择吗?我不在乎什么简单有效,我想确定这种情况的正确模式。
作为其他信息,请考虑ObjectA
通常会作为以下序列提供IEnumerable<ObjectA>
.
我不需要知道是否"string"
==
or !=
objectA
实例;不涉及排序。
编辑以澄清(和帮助)
抱歉,写一个好问题有时很困难......
假设我不能代表ObjectA
作为字符串以进行比较(不能选择违反封装)。
@Oliver 问题末尾的解决方案再次帮助了我(并再次+1)。
我可以简单地定义一个自定义接口:
interface IContextConverter {
string ToEquatableStringForContext1();
string ToEquatableStringForContext2();
}
因为我也有一个ObjectB
具有相同的逻辑但不同的属性,两者都会实现IContextConverter
(或者也许我会找到一个更好的名字)避免违反RAP http://codemanship.co.uk/parlezuml/blog/?postid=934.