Общие сведения об атрибутах (Visual Basic)Attributes overview (Visual Basic)

Атрибуты предоставляют мощное средство для связывания метаданных или декларативной информации с кодом (сборки, типы, методы, свойства и т. д.).Attributes provide a powerful method of associating metadata, or declarative information, with code (assemblies, types, methods, properties, and so forth). Связав атрибут связан с сущностью программы, вы можете проверять этот атрибут во время выполнения, используя технику отражения.After an attribute is associated with a program entity, the attribute can be queried at run time by using a technique called reflection. Дополнительные сведения см. в статье Отражение (Visual Basic).For more information, see Reflection (Visual Basic).

Атрибуты имеют следующие свойства.Attributes have the following properties:

  • Атрибуты добавляют в программу метаданные.Attributes add metadata to your program. Метаданные — это сведения о типах, определенных в программе.Metadata is information about the types defined in a program. Все сборки .NET содержат некоторый набор метаданных, описывающих типы и члены типов, определенные в этой сборке.All .NET assemblies contain a specified set of metadata that describes the types and type members defined in the assembly. Вы можете добавить пользовательские атрибуты, чтобы указать любую дополнительную информацию.You can add custom attributes to specify any additional information that is required. Дополнительные сведения см. в статье Creating Custom Attributes (Visual Basic) (Создание пользовательских атрибутов (Visual Basic)).For more information, see, Creating Custom Attributes (Visual Basic).

  • Вы можете применить один или несколько атрибутов ко всей сборке, к модулю или к более мелким элементам программы, например к классам и свойствам.You can apply one or more attributes to entire assemblies, modules, or smaller program elements such as classes and properties.

  • Атрибуты могут принимать аргументы, так же как методы и свойства.Attributes can accept arguments in the same way as methods and properties.

  • Программа может проверить собственные метаданные или метаданные в других программах, используя отражение.Your program can examine its own metadata or the metadata in other programs by using reflection. Дополнительные сведения см. в статье Accessing Attributes by Using Reflection (Visual Basic) (Обращение к атрибутам с помощью отражения (Visual Basic)).For more information, see Accessing Attributes by Using Reflection (Visual Basic).

Использование атрибутовUsing Attributes

Атрибуты можно использовать почти в любых объявлениях, но для каждого атрибута можно ограничить типы объявлений, в которых он является допустимым.Attributes can be placed on most any declaration, though a specific attribute might restrict the types of declarations on which it is valid. В Visual Basic атрибуты заключаются в угловые скобки (< >).In Visual Basic, an attribute is enclosed in angle brackets (< >). Они должны располагаться непосредственно перед тем элементом, к которому они применяются, и обязательно в той же строке.It must appear immediately before the element to which it is applied, on the same line.

В этом примере атрибут SerializableAttribute используется для применения определенной характеристики к классу:In this example, the SerializableAttribute attribute is used to apply a specific characteristic to a class:

<System.Serializable()> Public Class SampleClass
    ' Objects of this type can be serialized.
End Class

Метод с атрибутом DllImportAttribute объявляется следующим образом:A method with the attribute DllImportAttribute is declared like this:

Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub

В объявлении можно разместить несколько атрибутов:More than one attribute can be placed on a declaration:

Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub

Некоторые атрибуты можно указать для одной сущности более одного раза.Some attributes can be specified more than once for a given entity. Пример такого многократно используемого атрибута — ConditionalAttribute:An example of such a multiuse attribute is ConditionalAttribute:

<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub

Примечание

По соглашению все имена атрибутов заканчиваются словом "Attribute", чтобы отличать их от других элементов платформы .NET Framework.By convention, all attribute names end with the word "Attribute" to distinguish them from other items in the .NET Framework. Но при использовании атрибута в коде этот суффикс можно не указывать.However, you do not need to specify the attribute suffix when using attributes in code. Например, обращение [DllImport] эквивалентно [DllImportAttribute], хотя в .NET Framework этот атрибут имеет имя DllImportAttribute.For example, [DllImport] is equivalent to [DllImportAttribute], but DllImportAttribute is the attribute's actual name in the .NET Framework.

Параметры атрибутовAttribute Parameters

Многие атрибуты имеют параметры, которые могут быть позиционными, неименованными или именованными.Many attributes have parameters, which can be positional, unnamed, or named. Позиционные параметры необходимо указывать в строгом порядке и их нельзя опускать. Именованные параметры являются необязательными и их можно указывать в любом порядке.Any positional parameters must be specified in a certain order and cannot be omitted; named parameters are optional and can be specified in any order. Сначала указываются позиционные параметры.Positional parameters are specified first. Например, эти три атрибута являются эквивалентными:For example, these three attributes are equivalent:

<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>

Первый параметр (имя библиотеки DLL) является позиционным и всегда располагается первым, остальные параметры являются именованными.The first parameter, the DLL name, is positional and always comes first; the others are named. В этом примере оба именованных параметра имеют значение по умолчанию (false), и мы можем их опустить.In this case, both named parameters default to false, so they can be omitted. Сведения о значениях параметров по умолчанию указываются в документации по каждому отдельному атрибуту.Refer to the individual attribute's documentation for information on default parameter values.

Целевые объекты атрибутовAttribute Targets

Целевой объект атрибута — это сущность, к которой применяется атрибут.The target of an attribute is the entity to which the attribute applies. Например, атрибут можно применить к классу, отдельному методу или ко всей сборке.For example, an attribute may apply to a class, a particular method, or an entire assembly. По умолчанию атрибут применяется к тому элементу, перед которым он указан.By default, an attribute applies to the element that it precedes. Но у вас есть возможность явным образом указать, например, что атрибут применяется к методу, параметру или возвращаемому значению.But you can also explicitly identify, for example, whether an attribute is applied to a method, or to its parameter, or to its return value.

Чтобы явным образом определить целевой объект атрибута, используйте следующий синтаксис:To explicitly identify an attribute target, use the following syntax:

<target : attribute-list>

Возможные значения target перечислены в следующей таблице.The list of possible target values is shown in the following table.

Целевое значениеTarget value ПрименениеApplies to
assembly Вся сборкаEntire assembly
module Текущий модуль сборки (это не то же самое, что модуль Visual Basic)Current assembly module (which is different from a Visual Basic Module)

Следующий пример демонстрирует, как применить атрибуты к сборкам и модулям.The following example shows how to apply attributes to assemblies and modules. Дополнительные сведения см. в статье Common Attributes (Visual Basic) (Распространенные атрибуты (Visual Basic)).For more information, see Common Attributes (Visual Basic).

Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>

Популярные методы применения атрибутовCommon Uses for Attributes

В следующем списке перечислены несколько распространенных применений для атрибутов.The following list includes a few of the common uses of attributes in code:

  • Указание для методов в веб-службах атрибута WebMethod, который обозначает, что метод должен вызываться по протоколу SOAP.Marking methods using the WebMethod attribute in Web services to indicate that the method should be callable over the SOAP protocol. Дополнительные сведения см. в разделе WebMethodAttribute.For more information, see WebMethodAttribute.

  • Описание способов упаковки параметров методов при взаимодействии с машинным кодом.Describing how to marshal method parameters when interoperating with native code. Дополнительные сведения см. в разделе MarshalAsAttribute.For more information, see MarshalAsAttribute.

  • Описание свойств COM для классов, методов и интерфейсов.Describing the COM properties for classes, methods, and interfaces.

  • Вызов неуправляемого кода с помощью класса DllImportAttribute.Calling unmanaged code using the DllImportAttribute class.

  • Указание для сборки таких параметров, как заголовок, версия, описание или товарный знак.Describing your assembly in terms of title, version, description, or trademark.

  • Указание членов класса, которые будут сериализованы при сохранении класса.Describing which members of a class to serialize for persistence.

  • Описание правил сопоставления членов класса с XML-узлами при XML-сериализации.Describing how to map between class members and XML nodes for XML serialization.

  • Описание требований безопасности для методов.Describing the security requirements for methods.

  • Указание характеристик, используемых для обеспечения безопасности.Specifying characteristics used to enforce security.

  • Управление оптимизацией для JIT-компилятора, сохраняя при этом простоту отладки кода.Controlling optimizations by the just-in-time (JIT) compiler so the code remains easy to debug.

  • Получение сведений об объекте, вызывающем метод.Obtaining information about the caller to a method.

Дополнительные сведения см. на страницеFor more information, see:

См. такжеSee also