Использование атрибутов (Руководство по программированию на C#)
Обновлен: Ноябрь 2007
Атрибуты могут быть размещены в большинстве объявлений, хотя определенный атрибут может ограничить типы объявлений, в которых он допустим. Синтаксически атрибут указывается путем размещения его имени, заключенного в квадратные скобки, в начале объявления сущности, к которой он применяется. Например, объявление метода с атрибутом DllImport выглядит следующим образом.
[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();
Дополнительные сведения см. в разделе Класс DllImportAtribute.
Многие атрибуты имеют параметры, которые могут быть либо позиционными, неименованными, либо именованными. Именованные параметры следует указывать в определенном порядке, их нельзя опустить; именованные параметры являются необязательными и могут быть указаны в любой последовательности. Сначала указываются позиционные параметры. Например, следующие три атрибута являются эквивалентными.
[DllImport("user32.dll")]
[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]
Первый параметр — имя библиотеки DLL — является позиционным и всегда стоит на первом месте; остальные являются именованными. В этом случае оба именованных параметра по умолчанию имеют значение "false" и могут быть пропущены. Сведения о заданных по умолчанию значениях параметров см. в документации по отдельному атрибуту.
В объявлении можно разместить несколько атрибутов — либо по отдельности, либо в одном наборе скобок.
void MethodA([In][Out] ref double x) { }
void MethodB([Out][In] ref double x) { }
void MethodC([In, Out] ref double x) { }
Для заданной сущности некоторые атрибуты можно указать несколько раз. Примером такого многократно используемого атрибута является Conditional.
[Conditional("DEBUG"), Conditional("TEST1")]
void TraceMethod()
{
// ...
}
Примечание. |
---|
Чтобы отличать атрибуты от других элементов платформы .NET Framework, используется соглашение, по которому все имена атрибутов заканчиваются словом "Attribute" ("атрибут"). Однако нет необходимости указывать суффикс атрибута при его использовании в коде. Например, [DllImport] эквивалентен [DllImportAttribute], однако DllImportAttribute является фактическим именем атрибута в платформе .NET Framework. |
См. также
Основные понятия
Руководство по программированию в C#
Ссылки
Отражение (Руководство по программированию на C#)
Атрибуты (Руководство по программированию на C#)
Устранение неоднозначностей в целевых объектах атрибутов (Руководство по программированию на C#)
Создание настраиваемых атрибутов (руководство по программированию в C#)
Доступ к атрибутам через отражение (Руководство по программированию в C#)