У меня есть класс, у которого есть несколько свойств, одно из которых должно быть объектом, назовем его ExtraData. Это может быть объект любого из трех разных типов без общих полей между всеми тремя.
Должен ли я создать интерфейс маркера, который реализуют все три класса объектов, и сделать свойство ExtraData таким же типом интерфейса? Все, что я прочитал, говорит о том, что этого нужно избегать в .NET и по возможности использовать настраиваемые атрибуты. Если я сделаю это, смогу ли я сделать ExtraData простым объектом и проверять атрибуты, чтобы определить его тип? Если я хочу использовать эти данные, проверяя атрибуты и выполняя приведение типов соответственно, это похоже на большую дополнительную работу.
Является ли это исключением из правила «Не использовать интерфейсы маркеров»? Или мне не хватает чего-то очевидного?
Спасибо.
object
и помещал внутрь собственные запечатанные классы, тогда код, который хочет его использовать, может просто проверять наличие данного типа. Только 1 проверка и 1 кастинг, работает достаточно хорошо. - person Adam Houldsworth   schedule 16.04.2012