Создание настраиваемых атрибутов (руководство по программированию в C#)
Обновлен: Июль 2008
Можно создать собственные настраиваемые атрибуты, задав класс атрибутов, который явно или косвенно наследует от Attribute, что облегчает и ускоряет определение атрибутов в метаданных. Предположим, что необходимо пометить классы и структуры именем программиста, который создал класс или структуру. Можно задать класс настраиваемых атрибутов Author:
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct)
]
public class Author : System.Attribute
{
private string name;
public double version;
public Author(string name)
{
this.name = name;
version = 1.0;
}
}
В качестве имени класса используется имя атрибута Author. Он является производным от System.Attribute, следовательно, это класс настраиваемых атрибутов. Параметры конструктора являются позиционными параметрами настраиваемого атрибута, тогда name и все открытые для чтения и записи поля или свойства являются именованными параметрами, в этом случае единственным именованным параметром является version. Обратите внимание на то, что атрибут AttributeUsage используется для того, чтобы атрибут Author был действителен только для объявлений class и struct.
Новый атрибут можно использовать следующим образом:
[Author("H. Ackerman", version = 1.1)]
class SampleClass
{
// H. Ackerman's code goes here...
}
AttributeUsage имеет именованный параметр AllowMultiple, с помощью которого настраиваемый атрибут можно сделать одноразовым или многоразовым.
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // multiuse attribute
]
public class Author : System.Attribute
[Author("H. Ackerman", version = 1.1)]
[Author("M. Knott", version = 1.2)]
class SampleClass
{
// H. Ackerman's code goes here...
// M. Knott's code goes here...
}
Примечание. |
---|
Если в классе атрибута содержится свойство, то оно должно быть доступно для чтения и записи. Свойства, доступные только для записи, не поддерживаются в классах атрибутов в C#. |
См. также
Основные понятия
Руководство по программированию в C#
Ссылки
Отражение (Руководство по программированию на C#)
Атрибуты (Руководство по программированию на C#)
Использование атрибутов (Руководство по программированию на C#)
Устранение неоднозначностей в целевых объектах атрибутов (Руководство по программированию на C#)
Доступ к атрибутам через отражение (Руководство по программированию в C#)
Журнал изменений
Дата |
Журнал изменений |
Причина |
---|---|---|
Июль 2008 |
Добавлено примечание о поддержке свойств. |
Исправление ошибки содержимого. |