Я немного смущен о
Цель интерфейса Marker Vs Атрибуты.
Их цель выглядит так же, как и я (простите меня, если я ошибаюсь).
Может кто-нибудь объяснить, как они различаются по назначению?
Я немного смущен о
Цель интерфейса Marker Vs Атрибуты.
Их цель выглядит так же, как и я (простите меня, если я ошибаюсь).
Может кто-нибудь объяснить, как они различаются по назначению?
Вот некоторые преимущества обоих.
Интерфейсы маркера:
С другой стороны, атрибуты:
В значительной степени это зависит от конкретной архитектуры приложения и дизайна, целесообразно ли использовать интерфейс маркера или атрибут в конкретном случае.
Несколько лет назад, в эпоху pre Java 5, Java не поддерживала атрибуты. Поэтому, чтобы "пометить" класс или интерфейс, чтобы их можно было проверить во время выполнения, вы должны использовать интерфейсы маркеров, которые в основном представляют собой пустой интерфейс, но вы все равно можете проверить, может ли экземпляр быть добавлен в этот интерфейс.
В .NET интерфейсы маркеров не должны использоваться, кроме случаев специального использования (например, использование методов расширения), поскольку атрибуты обеспечивают лучший способ маркировать классы (и многое другое) с помощью метаинформации. То же самое касается Java 5 и новее, где были введены аннотации и их следует использовать вместо этого.
Если вы можете использовать его, предпочтительным является Атрибут.
Но есть несколько функций, связанных со статическим набором текста, который может предложить только интерфейс:
В стороне, гораздо быстрее проверить интерфейс, поскольку CLI предназначен для этого и имеет коды операций для него (как и С#: is/as).
Проверка атрибутов требует отражения; гораздо медленнее.
Взгляд, хотя другие ответы на большинство вопросов рассматриваются, но также: атрибуты гораздо более ограничены с точки зрения того, какие значения вы можете передать им; главным образом примитивов и строк.