AttributeTargets Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- Attribute
Felder
| Name | Wert | Beschreibung |
|---|---|---|
| Assembly | 1 | Attribut kann auf eine Assembly angewendet werden. |
| Module | 2 | Attribut kann auf ein Modul angewendet werden.
|
| 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.