我发现了一个类似的问题
这可能会含蓄地和/或部分地回答我的问题。
假设我想比较(没有很多嵌套条件)这个对象:
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。