Поделиться через


Использование атрибутов (Руководство по программированию на 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()
{
    // ...
}
48zeb25s.alert_note(ru-ru,VS.90).gifПримечание.

Чтобы отличать атрибуты от других элементов платформы .NET Framework, используется соглашение, по которому все имена атрибутов заканчиваются словом "Attribute" ("атрибут"). Однако нет необходимости указывать суффикс атрибута при его использовании в коде. Например, [DllImport] эквивалентен [DllImportAttribute], однако DllImportAttribute является фактическим именем атрибута в платформе .NET Framework.

См. также

Основные понятия

Руководство по программированию в C#

Ссылки

Отражение (Руководство по программированию на C#)

Атрибуты (Руководство по программированию на C#)

Устранение неоднозначностей в целевых объектах атрибутов (Руководство по программированию на C#)

Создание настраиваемых атрибутов (руководство по программированию в C#)

Доступ к атрибутам через отражение (Руководство по программированию в C#)

Attribute

System.Reflection