Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Атрибуты предоставляют мощный метод связывания метаданных или декларативной информации с кодом (сборки, типы, методы, свойства и т. д.). После связывания атрибута с сущностью программы атрибут можно запрашивать во время выполнения с помощью метода отражения. Дополнительные сведения см. в разделе "Отражение" (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-компилятора, чтобы код оставался простым для отладки.
Получение сведений о вызывающем методе.
Связанные разделы
Дополнительные сведения можно найти здесь