Udostępnij za pośrednictwem


Atrybuty (C# i Visual Basic)

Atrybuty zapewniają zaawansowane metoda kojarzenia metadanelub deklaracyjne informacji z kodu (zestawów, typy, metody, właściwości i tak dalej).Po atrybut jest skojarzony z jednostką program, atrybut mogą być wyszukiwane w czasie wykonywania przy użyciu techniki o nazwie odbicie.Aby uzyskać więcej informacji, zobacz Odbicie (C# i Visual Basic).

Atrybuty mają następujące właściwości:

  • Atrybuty Dodawanie metadane do programu.Metadane informacji na temat typów określonych w programie.Wszystkie.NET zestawów zawierają określonego zestawu metadane opisano typy i członków typ zdefiniowany w zestaw.Można dodawać atrybutów niestandardowych, aby podać dodatkowe informacje, które jest wymagane.Aby uzyskać więcej informacji zobacz temat, Tworzenie niestandardowych atrybutów (C# i Visual Basic).

  • Można zastosować jeden lub więcej atrybutów całe zespoły, moduły lub mniejsze elementy programu, takich jak klasy i właściwości.

  • Atrybuty można zaakceptować argumenty w taki sam sposób jak metody i właściwości.

  • Program można zbadać swoich własnych metadane lub metadane w innych programach przy użyciu odbicie.Aby uzyskać więcej informacji, zobacz Dostęp do atrybutów przy użyciu odbicia (C# i Visual Basic).

Przy użyciu atrybutów

Atrybuty mogą być umieszczane w każdej deklaracji, chociaż konkretny atrybut może ograniczyć typy deklaracji, na których jest prawidłowy.W C# należy określić atrybut umieszczając nazwę atrybut, ujęty w nawiasy kwadratowe ([]), powyżej deklaracji jednostki, której dotyczy.W Visual Basic, atrybut jest ujęte w nawiasy ostre (< >).Musi pojawić się się bezpośrednio przed element, do którego jest ono stosowane, w tym samym wierszu.

W tym przykładzie SerializableAttribute atrybut jest używany do zastosowania specyficzne cechy charakterystyczne do klasy:

<System.Serializable()> Public Class SampleClass
    ' Objects of this type can be serialized.
End Class
[System.Serializable]
public class SampleClass
{
    // Objects of this type can be serialized.
}

metoda z atrybut DllImportAttribute jest zadeklarowany następująco:

Imports System.Runtime.InteropServices


...


<System.Runtime.InteropServices.DllImport("user32.dll")> 
Sub SampleMethod()
End Sub
using System.Runtime.InteropServices;


...


[System.Runtime.InteropServices.DllImport("user32.dll")]
extern static void SampleMethod();

Więcej niż jeden atrybut może być umieszczony w deklaracji:

Imports System.Runtime.InteropServices


...


Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub
using System.Runtime.InteropServices;


...


void MethodA([In][Out] ref double x) { }
void MethodB([Out][In] ref double x) { }
void MethodC([In, Out] ref double x) { }

Niektóre atrybuty można określić więcej niż jeden raz dla danej jednostki.Przykładem takiego الهلال atrybut jest ConditionalAttribute:

<Conditional("DEBUG"), Conditional("TEST1")> 
Sub TraceMethod()
End Sub
[Conditional("DEBUG"), Conditional("TEST1")]
void TraceMethod()
{
    // ...
}

[!UWAGA]

Umownie, wszystkie nazwy atrybut kończą się słowo "Atrybutu", aby odróżnić je od innych elementów.NET Framework.Jednakże nie trzeba określać sufiks atrybut , przy użyciu atrybutów w kodzie.Na przykład [DllImport] jest równoważne z [DllImportAttribute], ale DllImportAttribute jest rzeczywista nazwa atrybutw.NET Framework.

z0w1kczw.collapse_all(pl-pl,VS.110).gifParametry atrybutu

Wiele atrybutów mają parametry, które mogą być pozycyjne, nazwane lub nienazwane.Serwomechanizm parametry muszą być określone w określonej kolejności i nie mogą być pominięte; nazwane parametry są opcjonalne i może być określony w dowolnej kolejności.Serwomechanizm parametry są określane jako pierwsze.Na przykład te trzy atrybuty są równoważne:

[DllImport("user32.dll")]
[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]
<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>

Pierwszy parametr, nazwa biblioteki DLL jest pozycyjne i zawsze były wyświetlane jako pierwsze; pozostałe o nazwie.W tym wypadku nazwanej zarówno domyślne parametry FALSE, więc można pominąć.Zajrzyj do dokumentacji poszczególnych atrybutdla informacji na temat wartości domyślne parametr .

z0w1kczw.collapse_all(pl-pl,VS.110).gifCele atrybutu

Docelowej atrybut jest jednostka, do której stosuje się atrybut .Na przykład atrybut może stosować do klasy, konkretnej metodalub całego zestaw.Domyślnie atrybut stosuje się do elementu, który go poprzedza.Ale można również jednoznacznie zidentyfikować, na przykład, czy atrybut jest stosowany do metodalub jej parametrlub swojej zwracanej wartości.

Aby jawnie określić obiekt docelowy atrybut , należy użyć następującej składni:

[target : attribute-list]
<target : attribute-list>

Lista możliwych target wartości jest pokazane w poniższej tabeli.

C#

Visual Basic

Stosuje się do

assembly

Assembly

Cały zestaw

module

Module

Bieżącego zestaw moduł (które różni się od Visual Basic modułu)

field

Nie jest obsługiwana

Pole klasy lub struktury

event

Nie jest obsługiwana

Zdarzenia

method

Nie jest obsługiwana

Metoda lub get i setAkcesory właściwość

param

Nie jest obsługiwana

Parametry metody lub set właściwość akcesora parametrów

property

Nie jest obsługiwana

Właściwość

return

Nie jest obsługiwana

Zwraca wartość metoda, właściwośćindeksator, lub get właściwość akcesora

type

Nie jest obsługiwana

Struct, klasy, interfejs, enum lub delegat

Poniższy przykład pokazuje, jak zastosowanie atrybutów do zespołów i moduły.Aby uzyskać więcej informacji, zobacz Atrybuty wspólnych (C# i Visual Basic).

Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"), 
Module: CLSCompliant(True)> 
using System;
using System.Reflection;
[assembly: AssemblyTitleAttribute("Production assembly 4")]
[module: CLSCompliant(true)]

Poniższy przykład ilustruje sposób zastosować atrybuty do metody i parametrów metoda i metoda zwracają wartości w języku C#.

// default: applies to method
[SomeAttr]
int Method1() { return 0; }

// applies to method
[method: SomeAttr]
int Method2() { return 0; }

// applies to return value
[return: SomeAttr]
int Method3() { return 0; }

[!UWAGA]

Niezależnie od celów, na którym SomeAttr jest zdefiniowany jako prawidłowy, return docelowy musi zostać określona, nawet jeśli SomeAttr zostały określone zastosowanie tylko do zwracania wartości.Innymi słowy, kompilator nie będzie używać AttributeUsage informacji do celów niejednoznaczne atrybut rozpoznać .Aby uzyskać więcej informacji, zobacz AttributeUsage (C# i Visual Basic).

Typowe zastosowania atrybutów

Poniższa lista zawiera kilka typowych zastosowań atrybutów w kodzie:

  • Oznaczanie przy użyciu metody WebMethod atrybut w usługach sieć Web , aby wskazać metoda powinny być wpłacone przez protokół SOAP . Aby uzyskać więcej informacji, zobacz WebMethodAttribute.

  • Opisujące sposób parametrymetoda skierowaćprzy współpracy z kodem natywny . Aby uzyskać więcej informacji, zobacz MarshalAsAttribute.

  • Opisem właściwości COM dla klas, metody i interfejsy.

  • Za pomocą kod niezarządzany wywołania DllImportAttribute klasy.

  • Opisu zestaw z tytułu, wersja, opis lub znakiem towarowym.

  • Opisujące członków klasy do serializacji dla trwałości.

  • Opisujące sposób mapa między członków klasy i węzłów XML XML szeregowanie.

  • Opisujących wymagania dotyczące metod zabezpieczenia .

  • Określanie właściwości używany w celu wymuszenia zabezpieczenia.

  • Kontrolowanie optymalizacje przez kompilator dokładnie na czas (JIT), więc kod pozostaje można łatwo debugować.

  • Uzyskiwanie informacji na temat wywołującego metoda.

Sekcje pokrewne

Aby uzyskać więcej informacji zobacz:

Zobacz też

Informacje

Odbicie (C# i Visual Basic)

Koncepcje

Podręcznik programowania C#

Inne zasoby

Podręcznik programowania Visual Basic

Rozszerzanie metadanych za pomocą atrybutów