Прочитать на английском

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


Attribute Класс

Определение

Представляет базовый класс для пользовательских атрибутов.

C#
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
public abstract class Attribute
C#
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
C#
[System.AttributeUsage(System.AttributeTargets.All, AllowMultiple=false, Inherited=true)]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Attribute : System.Runtime.InteropServices._Attribute
Наследование
Attribute
Производный
Атрибуты
Реализации

Примеры

В следующем примере кода показано использование Attribute.

C#
using System;
using System.Reflection;

// An enumeration of animals. Start at 1 (0 = uninitialized).
public enum Animal {
    // Pets.
    Dog = 1,
    Cat,
    Bird,
}

// A custom attribute to allow a target to have a pet.
public class AnimalTypeAttribute : Attribute {
    // The constructor is called when the attribute is set.
    public AnimalTypeAttribute(Animal pet) {
        thePet = pet;
    }

    // Keep a variable internally ...
    protected Animal thePet;

    // .. and show a copy to the outside world.
    public Animal Pet {
        get { return thePet; }
        set { thePet = value; }
    }
}

// A test class where each method has its own pet.
class AnimalTypeTestClass {
    [AnimalType(Animal.Dog)]
    public void DogMethod() {}

    [AnimalType(Animal.Cat)]
    public void CatMethod() {}

    [AnimalType(Animal.Bird)]
    public void BirdMethod() {}
}

class DemoClass {
    static void Main(string[] args) {
        AnimalTypeTestClass testClass = new AnimalTypeTestClass();
        Type type = testClass.GetType();
        // Iterate through all the methods of the class.
        foreach(MethodInfo mInfo in type.GetMethods()) {
            // Iterate through all the Attributes for each method.
            foreach (Attribute attr in
                Attribute.GetCustomAttributes(mInfo)) {
                // Check for the AnimalType attribute.
                if (attr.GetType() == typeof(AnimalTypeAttribute))
                    Console.WriteLine(
                        "Method {0} has a pet {1} attribute.",
                        mInfo.Name, ((AnimalTypeAttribute)attr).Pet);
            }
        }
    }
}
/*
 * Output:
 * Method DogMethod has a pet Dog attribute.
 * Method CatMethod has a pet Cat attribute.
 * Method BirdMethod has a pet Bird attribute.
 */

Комментарии

Класс Attribute связывает предопределенную системную информацию или определяемую пользователем пользовательскую информацию с целевым элементом. Целевой элемент может быть сборкой, классом, конструктором, делегатом, перечислением, событием, полем, интерфейсом, методом, переносимым исполняемым модулем, параметром, свойством, возвращаемым значением, структурой или другим атрибутом.

Сведения, предоставляемые атрибутом, также называются метаданными. Метаданные можно проверить во время выполнения приложением, чтобы управлять процессом обработки данных программы или перед временем выполнения внешними средствами для управления обработкой или обслуживанием самого приложения. Например, .NET предопределяет и использует типы атрибутов для управления поведением во время выполнения, а некоторые языки программирования используют типы атрибутов для представления языковых функций, не поддерживаемых системой распространенных типов .NET.

Все типы атрибутов являются производными напрямую или косвенно от класса Attribute. Атрибуты можно применять к любому целевому элементу; к одному целевому элементу можно применить несколько атрибутов; и атрибуты могут наследоваться элементом, производным от целевого элемента. Используйте класс AttributeTargets, чтобы указать целевой элемент, к которому применяется атрибут.

Класс Attribute предоставляет удобные методы для получения и тестирования пользовательских атрибутов. Дополнительные сведения об использовании атрибутов см. в разделе Применение атрибутов и атрибутов.

Конструкторы

Attribute()

Инициализирует новый экземпляр класса Attribute.

Свойства

TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

Методы

Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

GetCustomAttribute(Assembly, Type, Boolean)

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

GetCustomAttribute(Assembly, Type)

Извлекает настраиваемый атрибут, примененный к указанной сборке. Параметры указывают сборку и тип настраиваемого атрибута для поиска.

GetCustomAttribute(MemberInfo, Type, Boolean)

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

GetCustomAttribute(MemberInfo, Type)

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

GetCustomAttribute(Module, Type, Boolean)

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

GetCustomAttribute(Module, Type)

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

GetCustomAttribute(ParameterInfo, Type, Boolean)

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

GetCustomAttribute(ParameterInfo, Type)

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

GetCustomAttributes(Assembly, Boolean)

Извлекает массив настраиваемых атрибутов, применяемых к сборке. Параметры указывают сборку и игнорируемый параметр поиска.

GetCustomAttributes(Assembly, Type, Boolean)

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

GetCustomAttributes(Assembly, Type)

Извлекает массив настраиваемых атрибутов, применяемых к сборке. Параметры указывают сборку и тип пользовательского атрибута для поиска.

GetCustomAttributes(Assembly)

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

GetCustomAttributes(MemberInfo, Boolean)

Извлекает массив настраиваемых атрибутов, применяемых к элементу типа. Параметры указывают элемент, тип настраиваемого атрибута для поиска и поиск предков элемента.

GetCustomAttributes(MemberInfo, Type, Boolean)

Извлекает массив настраиваемых атрибутов, применяемых к элементу типа. Параметры указывают элемент, тип настраиваемого атрибута для поиска и поиск предков элемента.

GetCustomAttributes(MemberInfo, Type)

Извлекает массив настраиваемых атрибутов, применяемых к элементу типа. Параметры указывают элемент и тип настраиваемого атрибута для поиска.

GetCustomAttributes(MemberInfo)

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

GetCustomAttributes(Module, Boolean)

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

GetCustomAttributes(Module, Type, Boolean)

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

GetCustomAttributes(Module, Type)

Извлекает массив настраиваемых атрибутов, применяемых к модулю. Параметры указывают модуль и тип настраиваемого атрибута для поиска.

GetCustomAttributes(Module)

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

GetCustomAttributes(ParameterInfo, Boolean)

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

GetCustomAttributes(ParameterInfo, Type, Boolean)

Извлекает массив настраиваемых атрибутов, применяемых к параметру метода. Параметры указывают параметр метода, тип настраиваемого атрибута для поиска и поиск предков параметра метода.

GetCustomAttributes(ParameterInfo, Type)

Извлекает массив настраиваемых атрибутов, применяемых к параметру метода. Параметры указывают параметр метода и тип настраиваемого атрибута для поиска.

GetCustomAttributes(ParameterInfo)

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

GetHashCode()

Возвращает хэш-код для этого экземпляра.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

IsDefined(Assembly, Type, Boolean)

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

IsDefined(Assembly, Type)

Определяет, применяются ли пользовательские атрибуты к сборке. Параметры указывают сборку и тип пользовательского атрибута для поиска.

IsDefined(MemberInfo, Type, Boolean)

Определяет, применяются ли пользовательские атрибуты к элементу типа. Параметры указывают элемент, тип настраиваемого атрибута для поиска и поиск предков элемента.

IsDefined(MemberInfo, Type)

Определяет, применяются ли пользовательские атрибуты к элементу типа. Параметры указывают элемент и тип настраиваемого атрибута для поиска.

IsDefined(Module, Type, Boolean)

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

IsDefined(Module, Type)

Определяет, применяются ли к модулю любые пользовательские атрибуты указанного типа. Параметры указывают модуль и тип настраиваемого атрибута для поиска.

IsDefined(ParameterInfo, Type, Boolean)

Определяет, применяются ли пользовательские атрибуты к параметру метода. Параметры указывают параметр метода, тип настраиваемого атрибута для поиска и поиск предков параметра метода.

IsDefined(ParameterInfo, Type)

Определяет, применяются ли пользовательские атрибуты к параметру метода. Параметры указывают параметр метода и тип настраиваемого атрибута для поиска.

Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен с соответствующим набором идентификаторов диспетчера.

_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса.

_Attribute.GetTypeInfoCount(UInt32)

Извлекает количество интерфейсов сведений о типе, которые предоставляет объект (0 или 1).

_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

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

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Потокобезопасность

Этот тип является потокобезопасной.

См. также раздел