AttributeTargets Enumeration

Definition

Gibt die Anwendungselemente an, auf die es gültig ist, um ein Attribut anzuwenden.

Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.

public enum class AttributeTargets
[System.Flags]
public enum AttributeTargets
[System.Flags]
[System.Serializable]
public enum AttributeTargets
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum AttributeTargets
[<System.Flags>]
type AttributeTargets = 
[<System.Flags>]
[<System.Serializable>]
type AttributeTargets = 
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type AttributeTargets = 
Public Enum AttributeTargets
Vererbung
AttributeTargets
Attribute

Felder

Name Wert Beschreibung
Assembly 1

Attribut kann auf eine Assembly angewendet werden.

Module 2

Attribut kann auf ein Modul angewendet werden. Module bezieht sich auf eine portable ausführbare Datei (.dll or.exe) und nicht auf ein Visual Basic Standardmodul.

Class 4

Attribut kann auf eine Klasse angewendet werden.

Struct 8

Attribut kann auf eine Struktur angewendet werden; d. h. ein Werttyp.

Enum 16

Attribut kann auf eine Aufzählung angewendet werden.

Constructor 32

Attribut kann auf einen Konstruktor angewendet werden.

Method 64

Attribut kann auf eine Methode angewendet werden.

Property 128

Attribut kann auf eine Eigenschaft angewendet werden.

Field 256

Attribut kann auf ein Feld angewendet werden.

Event 512

Attribut kann auf ein Ereignis angewendet werden.

Interface 1024

Attribut kann auf eine Schnittstelle angewendet werden.

Parameter 2048

Attribut kann auf einen Parameter angewendet werden.

Delegate 4096

Attribut kann auf eine Stellvertretung angewendet werden.

ReturnValue 8192

Attribut kann auf einen Rückgabewert angewendet werden.

GenericParameter 16384

Attribut kann auf einen generischen Parameter angewendet werden. Derzeit kann dieses Attribut nur in C#, Microsoft Zwischensprache (MSIL) und ausgegebenen Code angewendet werden.

All 32767

Attribut kann auf ein beliebiges Anwendungselement angewendet werden.

Beispiele

Im folgenden Beispiel wird die Anwendung von Attributen auf verschiedene Ziele veranschaulicht.

Note

Visual Basic Syntax unterstützt die Anwendung von Attributen auf Typparameter nicht.

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) {
        }
    }
}
open System

// This attribute is only valid on a class.
[<AttributeUsage(AttributeTargets.Class)>]
type ClassTargetAttribute() =
    inherit Attribute()

// This attribute is only valid on a method.
[<AttributeUsage(AttributeTargets.Method)>]
type MethodTargetAttribute() =
    inherit Attribute()

// This attribute is only valid on a constructor.
[<AttributeUsage(AttributeTargets.Constructor)>]
type ConstructorTargetAttribute() =
    inherit Attribute()

// This attribute is only valid on a field.
[<AttributeUsage(AttributeTargets.Field)>]
type FieldTargetAttribute() =
    inherit Attribute()

// This attribute is valid on a class or a method.
[<AttributeUsage(AttributeTargets.Class ||| AttributeTargets.Method)>]
type ClassMethodTargetAttribute() =
    inherit Attribute()

// This attribute is valid on a generic type parameter.
[<AttributeUsage(AttributeTargets.GenericParameter)>]
type GenericParameterTargetAttribute() =
    inherit Attribute()

// This attribute is valid on any target.
[<AttributeUsage(AttributeTargets.All)>]
type AllTargetsAttribute() =
    inherit Attribute()

[<ClassTarget>]
[<ClassMethodTarget>]
[<AllTargets>]
type TestClassAttribute [<ConstructorTarget>] [<AllTargets>] () =
    [<FieldTarget>]
    [<AllTargets>]
    let myInt = 0

    [<MethodTarget>]
    [<ClassMethodTarget>]
    [<AllTargets>]
    member _.Method1() = ()

    member _.GenericMethod<[<GenericParameterTarget; AllTargets>] 'T>(x: 'T) = ()
Module DemoModule
    ' This attribute is only valid on a class.
    <AttributeUsage(AttributeTargets.Class)> _
    Public Class ClassTargetAttribute
        Inherits Attribute
    End Class

    ' This attribute is only valid on a method.
    <AttributeUsage(AttributeTargets.Method)> _
    Public Class MethodTargetAttribute
        Inherits Attribute
    End Class

    ' This attribute is only valid on a constructor.
    <AttributeUsage(AttributeTargets.Constructor)> _
    Public Class ConstructorTargetAttribute 
        Inherits Attribute
    End Class

    ' This attribute is only valid on a field.
    <AttributeUsage(AttributeTargets.Field)> _
    Public Class FieldTargetAttribute 
        Inherits Attribute
    End Class

    ' This attribute is valid on a class or a method.
    <AttributeUsage(AttributeTargets.Class Or AttributeTargets.Method)> _
    Public Class ClassMethodTargetAttribute 
        Inherits Attribute
    End Class

    ' This attribute is valid on any target.
    <AttributeUsage(AttributeTargets.All)> _
    Public Class AllTargetsAttribute 
        Inherits Attribute
    End Class

    <ClassTarget, _
    ClassMethodTarget, _
    AllTargets> _
    Public Class TestClassAttribute
        <ConstructorTarget, _
        AllTargets> _
        Public Sub New
        End Sub

        <MethodTarget, _
        ClassMethodTarget, _
        AllTargets> _
        Public Sub Method1()
        End Sub

        <FieldTarget, _
        AllTargets> _
        Public myInt as Integer
    End Class

    Sub Main()
    End Sub
End Module

Hinweise

Die AttributeUsageAttribute Klasse verwendet diese Aufzählung, um die Art des Elements anzugeben, auf das es gültig ist, um ein Attribut anzuwenden.

AttributeTargets Enumerationswerte können mit einem bitweisen OR-Vorgang kombiniert werden, um die bevorzugte Kombination abzurufen.

Gilt für:

Weitere Informationen