Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Атрибуты предоставляют мощный метод связывания метаданных или декларативной информации с кодом (сборки, типы, методы, свойства и т. д.). После связывания атрибута с сущностью программы атрибут можно запрашивать во время выполнения с помощью метода отражения. Дополнительные сведения см. в разделе "Отражение" (Visual Basic).
Атрибуты имеют следующие свойства:
Атрибуты добавляют метаданные в программу. метаданные — это сведения о типах, определенных в программе. Все сборки .NET содержат указанный набор метаданных, описывающий типы и члены типов, определенные в сборке. Вы можете добавить настраиваемые атрибуты, чтобы указать все необходимые дополнительные сведения. Дополнительные сведения см. в статье "Создание настраиваемых атрибутов ( Visual Basic)".
Можно применить один или несколько атрибутов ко всем сборкам, модулям или небольшим элементам программы, таким как классы и свойства.
Атрибуты могут принимать аргументы так же, как методы и свойства.
Программа может изучить собственные метаданные или метаданные в других программах с помощью отражения. Дополнительные сведения см. в разделе "Доступ к атрибутам с помощью отражения" (Visual Basic).
Использование атрибутов
Атрибуты можно поместить в большинство объявлений, хотя определенный атрибут может ограничить типы объявлений, для которых он действителен. В Visual Basic атрибут заключен в угловые скобки (<>). Он должен отображаться непосредственно перед элементом, к которому он применяется, в той же строке.
В этом примере атрибут SerializableAttribute используется для применения определенной характеристики к классу:
<System.Serializable()> Public Class SampleClass
' Objects of this type can be serialized.
End Class
Метод с атрибутом DllImportAttribute объявляется следующим образом:
Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub
Несколько атрибутов можно поместить в объявление:
Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub
Некоторые атрибуты можно указать несколько раз для определенной сущности. Примером такого многопользовательского атрибута является ConditionalAttribute:
<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub
Замечание
По соглашению все имена атрибутов заканчиваются словом "Атрибут", чтобы отличить их от других элементов в .NET Framework. Однако при использовании атрибутов в коде не требуется указывать суффикс атрибутов. Например, [DllImport]
эквивалентно [DllImportAttribute]
, но DllImportAttribute
является фактическим именем атрибута в .NET Framework.
Параметры атрибута
Многие атрибуты имеют параметры, которые могут быть позициональными, неназванными или именованными. Любые позиционные параметры должны быть указаны в определенном порядке и не могут быть опущены; именованные параметры являются необязательными и могут быть указаны в любом порядке. Сначала задаются позиционные параметры. Например, эти три атрибута эквивалентны:
<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>
Первый параметр, имя библиотеки DLL, позиционный и всегда приходит первым; другие называются. В этом случае оба именованных параметра по умолчанию используют значение false, поэтому они могут быть опущены. Сведения о значениях параметров по умолчанию см. в документации по отдельным атрибутам.
Целевые объекты атрибутов
Цель атрибута — это сущность, к которой применяется атрибут. Например, атрибут может применяться к классу, конкретному методу или всей сборке. По умолчанию атрибут применяется к элементу, который он предшествует. Но можно также явно определить, применяется ли атрибут к методу или к его параметру или к возвращаемого значения.
Чтобы явно определить целевой объект атрибута, используйте следующий синтаксис:
<target : attribute-list>
Список возможных значений target
показан в следующей таблице.
Целевое значение | Применимо к |
---|---|
assembly |
Вся сборка |
module |
Текущий модуль сборки (который отличается от модуля Visual Basic) |
В следующем примере показано, как применять атрибуты к сборкам и модулям. Дополнительные сведения см. в разделе "Общие атрибуты" (Visual Basic).
Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>
Распространенные способы использования атрибутов
В следующем списке приведены некоторые распространенные способы использования атрибутов в коде:
Пометка методов с помощью атрибута
WebMethod
в веб-службах, чтобы указать, что метод должен вызываться по протоколу SOAP. Дополнительные сведения см. в разделе WebMethodAttribute.Как осуществлять маршалирование параметров метода при взаимодействии с нативным кодом. Дополнительные сведения см. в разделе MarshalAsAttribute.
Описание свойств COM для классов, методов и интерфейсов.
Вызов неуправляемого кода с помощью класса DllImportAttribute.
Описание сборки с точки зрения названия, версии, описания или торговой марки.
Описание элементов класса, подлежащих сериализации для устойчивости.
Описание сопоставления между членами класса и XML-узлами для сериализации XML.
Описание требований безопасности для методов.
Указание характеристик, используемых для обеспечения безопасности.
Управление оптимизацией с помощью JIT-компилятора, чтобы код оставался простым для отладки.
Получение сведений о вызывающем методе.
Связанные разделы
Дополнительные сведения можно найти здесь