AttributeTargets Wyliczenie

Definicja

Określa elementy aplikacji, na których jest prawidłowy zastosowanie atrybutu.

To wyliczenie obsługuje bitową kombinację jego wartości składowych.

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
Dziedziczenie
AttributeTargets
Atrybuty

Pola

All 32767

Atrybut można zastosować do dowolnego elementu aplikacji.

Assembly 1

Atrybut można zastosować do zestawu.

Class 4

Atrybut można zastosować do klasy.

Constructor 32

Atrybut można zastosować do konstruktora.

Delegate 4096

Atrybut można zastosować do delegata.

Enum 16

Atrybut można zastosować do wyliczenia.

Event 512

Atrybut można zastosować do zdarzenia.

Field 256

Atrybut można zastosować do pola.

GenericParameter 16384

Atrybut można zastosować do parametru ogólnego. Obecnie ten atrybut można stosować tylko w języku C#, języku Microsoft Intermediate Language (MSIL) i emitowanym kodzie.

Interface 1024

Atrybut można zastosować do interfejsu.

Method 64

Atrybut można zastosować do metody .

Module 2

Atrybut można zastosować do modułu. Moduleodnosi się do przenośnego pliku wykonywalnego (.dll or.exe), a nie modułu standardowego Visual Basic.

Parameter 2048

Atrybut można zastosować do parametru.

Property 128

Atrybut można zastosować do właściwości.

ReturnValue 8192

Atrybut można zastosować do wartości zwracanej.

Struct 8

Atrybut można zastosować do struktury; czyli typ wartości.

Przykłady

Poniższy przykład ilustruje zastosowanie atrybutów do różnych obiektów docelowych.

Uwaga

Visual Basic i składni języka Visual C++ obecnie nie obsługują stosowania atrybutów do parametrów typu.

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

Uwagi

Klasa AttributeUsageAttribute używa tego wyliczenia, aby określić rodzaj elementu, na którym jest prawidłowy do zastosowania atrybutu.

AttributeTargets Wartości wyliczenia można połączyć z bitową operacją OR w celu uzyskania preferowanej kombinacji.

Dotyczy

Zobacz też