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


Применение атрибутов

Используйте следующую процедуру для применения атрибутов к элементам собственного кода.

  1. Определите новый атрибут или используйте существующий, импортировав его пространство имен из .NET Framework.

  2. Примените этот атрибут к элементу кода, поместив его непосредственно перед элементом.

    Каждый язык имеет свой собственный синтаксис атрибутов. В C++ и C# атрибут заключается в квадратные скобки и отделяется от элемента пробелами, которые могут содержать разрыв строки. В Visual Basic атрибут заключается в угловые скобки и должен находиться на той же логической строке. При необходимости вставки разрыва строки может использоваться символ продолжения строки. В J# атрибут присоединяется с помощью специального синтаксиса комментариев.

  3. Укажите позиционные и именованные параметры атрибута.

    Позиционные параметры являются обязательными и должны задаваться до всех именованных параметров. Они соответствуют параметрам одного из конструкторов атрибута. Именованные параметры являются необязательными и соответствуют свойствам атрибута. В C++, C# и J# укажите name=value для каждого необязательного параметра, где name — это имя свойства. В Visual Basic укажите name:=value.

При компиляции кода выполняется добавление атрибута в метаданные. Добавленный атрибут становится доступным среде CLR и любому пользовательскому инструменту или приложению через службы отражения среды выполнения.

По соглашению все имена атрибутов заканчиваются словом Attribute. Однако в некоторых языках, исполняемых в среде выполнения, например Visual Basic и C#, не требуется указание полного имени атрибута. Например, если требуется инициализировать System.ObsoleteAttribute, то можно ссылаться на него как на Obsolete.

Применение атрибута к методу

В следующем примере кода показано объявление System.ObsoleteAttribute, помечающего код как устаревший. Атрибуту передается строка "Will be removed in next version". Этот атрибут вызывает предупреждение компилятора, в котором отображается переданная строка при вызове кода, описываемого данным атрибутом.

Public Class Example
    ' Specify attributes between square brackets in C#.
    ' This attribute is applied only to the Add method.
    <Obsolete("Will be removed in next version.")>
    Public Shared Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function
End Class

Class Test
    Public Shared Sub Main()
        ' This generates a compile-time warning.
        Dim i As Integer = Example.Add(2, 2)
    End Sub
End Class
public class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
    [Obsolete("Will be removed in next version.")]
    public static int Add(int a, int b)
    {
        return (a + b);
    }
}

class Test
{
    public static void Main()
    {
        // This generates a compile-time warning.
        int i = Example.Add(2, 2);
    }
}
public ref class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
public:
    [Obsolete("Will be removed in next version.")]
    static int Add(int a, int b)
    {
        return (a + b);
    }
};

ref class Test
{
public:
    static void Main()
    {
        // This generates a compile-time warning.
        int i = Example::Add(2, 2);
    }
};

int main()
{
    Test::Main();
}

Применение атрибутов на уровне сборки

Если атрибут нужно применять на уровне сборки, используйте ключевое слово Assembly. В следующем коде показан атрибут AssemblyNameAttribute, применяемый на уровне сборки.

Imports System.Reflection
<Assembly:AssemblyTitle("My Assembly")>
using System.Reflection;
[assembly:AssemblyTitle("My Assembly")]
using namespace System::Reflection;
[assembly:AssemblyTitle("My Assembly")];

При применении этого атрибута строка "MyAssembly" помещается в манифест сборки в разделе метаданных файла. Атрибут можно просмотреть с помощью дизассемблера MSIL (Ildasm.exe) или путем создания пользовательской программы, извлекающей атрибут.

См. также

Ссылки

Атрибуты (C# и Visual Basic)

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

Расширение метаданных с помощью атрибутов

Извлечение информации, сохраненной в атрибуте

Другие ресурсы

Attributed Programming Concepts