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

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


AttributeTargets Перечисление

Определение

Задает элементы приложения, в которых допустимо применять аргумент.

Это перечисление поддерживает побитовую комбинацию значений его членов.

C#
[System.Flags]
public enum AttributeTargets
C#
[System.Flags]
[System.Serializable]
public enum AttributeTargets
C#
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum AttributeTargets
Наследование
AttributeTargets
Атрибуты

Поля

All 32767

Атрибут может быть применен к любому элементу приложения.

Assembly 1

Атрибут может быть применен к сборке.

Class 4

Атрибут может быть применен к классу.

Constructor 32

Атрибут может быть применен к конструктору.

Delegate 4096

Атрибут может быть применен к делегату.

Enum 16

Атрибут может быть применен к перечислению.

Event 512

Атрибут может быть применен к событию.

Field 256

Атрибут может быть применен к полю.

GenericParameter 16384

Атрибут может быть применен к универсальному параметру. Сейчас этот атрибут может применяться только в C#, промежуточном языке Майкрософт (MSIL) и созданном коде.

Interface 1024

Атрибут может быть применен к интерфейсу.

Method 64

Атрибут может быть применен к методу.

Module 2

Атрибут может быть применен к модулю. Module ссылается на переносимый исполняемый файл (DLL или EXE), а не на стандартный модуль Visual Basic.

Parameter 2048

Атрибут может быть применен к параметру.

Property 128

Атрибут может быть применен к свойству.

ReturnValue 8192

Атрибут может быть применен к возвращаемому значению.

Struct 8

Атрибут может быть применен к структуре, т.е. может являться типом значения.

Примеры

В следующем примере показано применение атрибутов к различным целевым объектам.

Примечание

в настоящее время синтаксис Visual Basic и Visual C++ не поддерживают применение атрибутов к параметрам типа.

C#
using System;

namespace AttTargsCS {
    // This attribute is only valid on a class.
    [AttributeUsage(AttributeTargets.Class)]
    public class ClassTargetAttribute : Attribute {
    }

    // This attribute is only valid on a method.
    [AttributeUsage(AttributeTargets.Method)]
    public class MethodTargetAttribute : Attribute {
    }

    // This attribute is only valid on a constructor.
    [AttributeUsage(AttributeTargets.Constructor)]
    public class ConstructorTargetAttribute : Attribute {
    }

    // This attribute is only valid on a field.
    [AttributeUsage(AttributeTargets.Field)]
    public class FieldTargetAttribute : Attribute {
    }

    // This attribute is valid on a class or a method.
    [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method)]
    public class ClassMethodTargetAttribute : Attribute {
    }

    // This attribute is valid on a generic type parameter.
    [AttributeUsage(AttributeTargets.GenericParameter)]
    public class GenericParameterTargetAttribute : Attribute {
    }

    // This attribute is valid on any target.
    [AttributeUsage(AttributeTargets.All)]
    public class AllTargetsAttribute : Attribute {
    }

    [ClassTarget]
    [ClassMethodTarget]
    [AllTargets]
    public class TestClassAttribute {
        [ConstructorTarget]
        [AllTargets]
        TestClassAttribute() {
        }

        [MethodTarget]
        [ClassMethodTarget]
        [AllTargets]
        public void Method1() {
        }

        [FieldTarget]
        [AllTargets]
        public int myInt;

        public void GenericMethod<
            [GenericParameterTarget, AllTargets] T>(T x) {
        }

        static void Main(string[] args) {
        }
    }
}

Комментарии

Класс AttributeUsageAttribute использует это перечисление, чтобы указать тип элемента, к которому он действителен для применения атрибута.

AttributeTargets Значения перечисления можно объединить с побитовой операцией OR, чтобы получить предпочтительное сочетание.

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

Продукт Версии
.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
.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
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

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