AttributeTargets 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定可应用属性的应用程序元素。
此枚举支持其成员值的按位组合。
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
- 继承
- 属性
字段
All | 32767 | 可以对任何应用程序元素应用属性。 |
Assembly | 1 | 可以对程序集应用属性。 |
Class | 4 | 可以对类应用属性。 |
Constructor | 32 | 可以对构造函数应用属性。 |
Delegate | 4096 | 可以对委托应用属性。 |
Enum | 16 | 可以对枚举应用属性。 |
Event | 512 | 可以对事件应用属性。 |
Field | 256 | 可以对字段应用属性。 |
GenericParameter | 16384 | 可以对泛型参数应用属性。 目前,此属性仅可应用于 C#、Microsoft 中间语言 (MSIL) 和已发出的代码中。 |
Interface | 1024 | 可以对接口应用属性。 |
Method | 64 | 可以对方法应用属性。 |
Module | 2 | 可以对模块应用属性。 |
Parameter | 2048 | 可以对参数应用属性。 |
Property | 128 | 可以对属性 (Property) 应用属性 (Attribute)。 |
ReturnValue | 8192 | 可以对返回值应用属性。 |
Struct | 8 | 可以对结构应用属性,即值类型。 |
示例
以下示例演示了将属性应用于各种目标。
备注
Visual Basic和 Visual C++ 语法目前不支持将属性应用于类型参数。
using namespace System;
namespace AttTargsCS
{
// This attribute is only valid on a class.
[AttributeUsage(AttributeTargets::Class)]
public ref class ClassTargetAttribute: public Attribute{};
// This attribute is only valid on a method.
[AttributeUsage(AttributeTargets::Method)]
public ref class MethodTargetAttribute: public Attribute{};
// This attribute is only valid on a constructor.
[AttributeUsage(AttributeTargets::Constructor)]
public ref class ConstructorTargetAttribute: public Attribute{};
// This attribute is only valid on a field.
[AttributeUsage(AttributeTargets::Field)]
public ref class FieldTargetAttribute: public Attribute{};
// This attribute is valid on a class or a method.
[AttributeUsage(AttributeTargets::Class|AttributeTargets::Method)]
public ref class ClassMethodTargetAttribute: public Attribute{};
// This attribute is valid on any target.
[AttributeUsage(AttributeTargets::All)]
public ref class AllTargetsAttribute: public Attribute{};
[ClassTarget]
[ClassMethodTarget]
[AllTargets]
public ref class TestClassAttribute
{
private:
[ConstructorTarget]
[AllTargets]
TestClassAttribute(){}
public:
[MethodTarget]
[ClassMethodTarget]
[AllTargets]
void Method1(){}
[FieldTarget]
[AllTargets]
int myInt;
static void Main(){}
};
}
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
注解
该 AttributeUsageAttribute 类使用此枚举指定应用属性时有效的元素类型。
AttributeTargets 枚举值可与按位 OR 操作结合使用,以获取首选组合。