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

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

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

Является ли это исключением из правила "Не использовать интерфейс маркеров"? Или я что-то упускаю очевидное?

Благодарю.

1 ответ

Решение

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

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

Другие вопросы по тегам