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


Практическое руководство. Предоставление описаний компонента в форме метаданных

Обновлен: Ноябрь 2007

С помощью attributes можно предоставлять описательные метаданные о компоненте. Атрибуты представляют собой специализированные классы, применяемые к элементам кода. Во время компиляции атрибуты преобразуются в метаданные, которые доступны для общеязыковой среды выполнения или пользовательских средств и приложений с помощью пространства имен System.Reflection.

Атрибуты присоединяются к компонентам путем добавления непосредственно перед компонентом ссылок на атрибут. В атрибутах содержатся любые необходимые параметры или флаги. Вызов конструктора атрибутов помещается в угловые скобки <> в Visual Basic и квадратные скобки [] в C#.

По правилам именования имена всех классов атрибутов заканчиваются словом "Attribute". В качестве примера можно указать классы DescriptionAttribute, ObsoleteAttribute и BrowsableAttribute. Однако в некоторых языках, исполняемых в общеязыковой среде выполнения, в том числе в Visual Basic и C#, полное имя атрибута не является необходимым. Например, для ссылок на атрибут ObsoleteAttribute в коде может использоваться сокращенное имя Obsolete.

Чтобы присоединить существующий атрибут к компоненту, выполните следующие действия.

  1. Определите, какие атрибуты необходимы для компонента.

  2. Присоедините атрибуты к компоненту. Обратите внимание, что необходимо либо использовать полное имя атрибута, либо добавлять соответствующий оператор Imports (using). В следующем примере показано присоединение атрибута DescriptionAttribute.

    Imports System.ComponentModel
    <Description("This is a description string")> Public Class TheClass
    End Class
    
    using System.ComponentModel;
    [Description("This is a description string")]
    public class TheClass
    {
    }
    

Пользовательские атрибуты

Пользователь может создавать собственные атрибуты для использования в пользовательских средствах и приложениях, наследуя их от класса Attribute. К этому базовому классу можно добавить любые пользовательские свойства или методы, необходимые в приложении.

Чтобы создать и применить пользовательский атрибут, выполните следующие действия.

  1. Создайте класс, наследуемый от Attribute.

    Public Class WidgetAttribute
       Inherits System.Attribute
    End Class
    
    public class WidgetAttribute: System.Attribute
    {
    }
    
  2. Определите свойства и методы, необходимые атрибуту, и напишите их код. В следующем примере показано, как создать свойство WidgetType, задаваемое в конструкторе класса WidgetAttribute. АтрибутAttributeUsageAttribute определяет, к каким элементам кода будет присоединяться атрибут.

    <AttributeUsage(System.AttributeTargets.Class)> Public Class _
       WidgetAttribute
       Inherits System.Attribute
       Private mWidgetType as WidgetTypeEnum
       ' Creates a readonly property for the WidgetAttribute class.
       Public ReadOnly Property WidgetType as WidgetTypeEnum
          Get
             Return mWidgetType
          End Get
       End Property
       ' Creates a constructor that accepts a parameter and assigns the 
       ' value of that parameter to the WidgetType property.
       Public Sub New(type as WidgetTypeEnum)
          MyBase.New()
          mWidgetType = type
       End Sub
    End Class
    
    [AttributeUsage(System.AttributeTargets.Class)]
    public class WidgetAttribute: System.Attribute
    {
       private WidgetTypeEnum widgetType;
    
       // Creates a readonly property for the WidgetAttribute class.
       public WidgetTypeEnum WidgetType
          {
             get {return widgetType;}
          }
    
       public WidgetAttribute(WidgetTypeEnum type): base()
          {
             widgetType = type;
          }
    }
    
  3. Используйте этот атрибут так же, как и другие атрибуты; проверьте, установлены ли все необходимые параметры.

    <WidgetAttribute(WidgetTypeEnum.VerticalWidget)> _
       Public Class WidgetFortyFive
    End Class
    
    [WidgetAttribute(WidgetTypeEnum.VerticalWidget)]
    public class WidgetFortyFive
    {
    }
    

См. также

Задачи

Практическое руководство. Предоставление метаданных для свойств, методов и событий компонента

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

Доступ к пользовательским атрибутам

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

Ссылки

Attribute

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

Помощь пользователю по компонентам