Стоит мне использовать интерфейс маркера или нет?

У меня есть класс, у которого есть несколько свойств, одно из которых должно быть объектом, назовем его ExtraData. Это может быть объект любого из трех разных типов без общих полей между всеми тремя.

Должен ли я создать интерфейс маркера, который реализуют все три класса объектов, и сделать свойство ExtraData таким же типом интерфейса? Все, что я прочитал, говорит о том, что этого нужно избегать в .NET и по возможности использовать настраиваемые атрибуты. Если я сделаю это, смогу ли я сделать ExtraData простым объектом и проверять атрибуты, чтобы определить его тип? Если я хочу использовать эти данные, проверяя атрибуты и выполняя приведение типов соответственно, это похоже на большую дополнительную работу.

Является ли это исключением из правила «Не использовать интерфейсы маркеров»? Или мне не хватает чего-то очевидного?

Спасибо.


person jpaull    schedule 16.04.2012    source источник
comment
Интерфейс маркера по-прежнему будет означать многочисленные проверки типов и приведение типов для фактического использования данных, не так ли? Раньше я использовал object и помещал внутрь собственные запечатанные классы, тогда код, который хочет его использовать, может просто проверять наличие данного типа. Только 1 проверка и 1 кастинг, работает достаточно хорошо.   -  person Adam Houldsworth    schedule 16.04.2012


Ответы (1)


Не совсем понятно, каковы ваши намерения. Чтобы ответить на ваш реальный вопрос, использование подобного интерфейса вполне приемлемо и, игнорируя мудрость подхода, если вам нужно ограничить значение свойства несколькими типами, это кажется законным подходом.

В действительности, однако, могут быть подходы получше, но без дополнительной информации о том, что вы делаете, я ничего не могу предложить.

person Adam Robinson    schedule 16.04.2012