Я нашел похожий вопрос
Как сравнить два совершенно разных объекта с похожими свойствами а>
которые могут неявно и/или частично отвечать на мой вопрос.
Предположим, я хочу сравнить (без множества вложенных условий) этот объект:
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
в виде строки для целей сравнения (нарушение инкапсуляции недопустимо).
В контексте-1 я должен сопоставить его с
PropertyY
.В контексте-2 я должен сопоставить его с алгоритмом, примененным к
PropertyY
/PropertyZ
.
Решение @Oliver в конце вопроса снова помогает мне (и снова +1). Я могу просто определить собственный интерфейс:
interface IContextConverter {
string ToEquatableStringForContext1();
string ToEquatableStringForContext2();
}
Поскольку у меня также есть ObjectB
с той же логикой, но другими свойствами, оба будут реализовывать IContextConverter
(или, может быть, я найду лучшее имя), избегая нарушения RAP.
System.String
равно"Hello mum!"
, аObjectA
имеет x, y, z, равные"Cool"
,'Z'
и42L
, как мне выяснить, равны они или нет? - person Jeppe Stig Nielsen   schedule 07.03.2013