Когда я должен использовать атрибут в C #? - PullRequest
43 голосов
/ 19 февраля 2010

Я видел некоторые примеры использования атрибута, например, (как карта для динамической фабрики) http://msdn.microsoft.com/en-us/magazine/cc164170.aspx

Просто интересно, в чем преимущество использования атрибута? Я могу найти ссылку на http://msdn.microsoft.com/en-gb/z0w1kczw(VS.80).aspx однако я не уверен, когда и почему я должен пытаться использовать его.

Ответы [ 5 ]

31 голосов
/ 19 февраля 2010

В .NET Framework атрибуты могут использоваться по многим причинам - например,

  • Определение классов сериализуемый

  • Выбор, какие методы подвергаются в веб-сервис

Attributes позволяет нам добавлять descriptions к классам, свойствам и методам во время разработки, которые затем можно исследовать во время выполнения с помощью отражения.

Рассмотрим этот пример:

Допустим, у вас есть класс, в котором есть метод из более старой версии, который по какой-либо причине все еще используется, и теперь вы придумали новую версию класса, которая фантастически использует Generic List и LINQ и имеет новый метод для аналогичной цели. Вы бы хотели, чтобы разработчики предпочли новый, представленный в более поздней версии вашей библиотеки. Как ты это сделаешь? Одним из способов является запись в документации. Лучше использовать атрибут следующим образом.

public class AccountsManager
{
  [Obsolete("prefer GetAccountsList", true)]
  static Account[] GetAccounts( ) { }    
  static List<Account> GetAccountsList( ) { }      
}

Если при компиляции программы используется метод obsolete, разработчик получает эту информацию и принимает соответствующее решение.

AccountManager.GetAccounts () устарел: предпочитаю GetAccountsList

Мы также можем создать и добавить Custom Attributes согласно требованиям.

Ссылка:


Надеюсь, это поможет

23 голосов
/ 19 февраля 2010

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

Подробнее:

http://blogs.msdn.com/ericlippert/archive/2009/02/02/properties-vs-attributes.aspx

6 голосов
/ 19 февраля 2010

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

4 голосов
/ 19 февраля 2010

Рассматривайте атрибут как метаданные о методе или свойстве, к которому он принадлежит. Что-то еще говорит о члене.

1 голос
/ 19 февраля 2010

.NET Framework предопределяет и использует типы атрибутов для управления поведением приложения во время выполнения.

Рассмотрим атрибут [webmethod], во время выполнения среда разрешает этот атрибут и определяет, какой метод будет доступен в веб-службе.

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

Чтобы разрешить атрибут во время выполнения, вы должны использовать отражение.

Проверьте ссылку MSDN для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...