我发现了一个类似的问题
这可能会含蓄地和/或部分地回答我的问题。
假设我想比较(没有很多嵌套条件)这个对象:
class ObjectA {
public string PropertyX { get; set; }
public char PropertyY { get; set; }
public long PropertyZ { get; set; }
}
到一个System.String。我只对平等或不平等感兴趣(而不是关于身份的一系列价值观)。
实施IEquatable<string>是 ObjectA一个正确的选择吗?我不在乎什么简单有效,我想为这种情况确定正确的模式。
作为其他信息,请考虑ObjectA通常以IEnumerable<ObjectA>.
我不需要知道是否"string" ==或!= objectA实例;不涉及排序。
编辑以澄清(和帮助)
对不起,写一个好问题有时很困难......
假设出于比较的目的我不能表示ObjectA为字符串(违反封装不是一种选择)。
在 context-1 中,我必须将它与
PropertyY.在上下文 2 中,我必须将其与应用于
PropertyY/的算法相匹配PropertyZ。
问题末尾的@Oliver解决方案再次帮助我(并再次+1)。我可以简单地定义一个自定义接口:
interface IContextConverter {
string ToEquatableStringForContext1();
string ToEquatableStringForContext2();
}
由于我也ObjectB具有相同的逻辑但不同的属性,因此两者都将实现IContextConverter(或者我可能会找到更好的名称)避免违反RAP。