Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az alábbi eljárással attribútumot alkalmazhat a kód egy elemére.
Adjon meg egy új attribútumot, vagy használjon meglévő .NET attribútumot.
Alkalmazza az attribútumot a kódelemre úgy, hogy közvetlenül az elem elé helyezi.
Minden nyelvnek saját attribútumszintaxisa van. C++ és C# esetén az attribútum szögletes zárójelekkel van körülvéve, és fehér szóközzel elválasztva az elemtől, amely sortörést is tartalmazhat. A Visual Basic az attribútumot szögletes zárójelek veszik körül, és ugyanazon a logikai vonalon kell lenniük; a vonal folytatása karakter használható, ha sortörést szeretne.
Adja meg az attribútum pozícióparamétereit és elnevezett paramétereit.
A pozícióparaméterek megadása kötelező, és a névvel ellátott paraméterek elé kell tartozniuk; ezek megfelelnek az attribútum egyik konstruktorának paramétereinek. Az elnevezett paraméterek nem kötelezőek, és megfelelnek az attribútum olvasási/írási tulajdonságainak. A C++ és C# esetében adja meg a
name=valueértéket az egyes választható paraméterekhez, aholnamea tulajdonság neve. Visual Basicben határozza megname:=value.
Az attribútum a kód lefordításakor metaadatokba kerül, és a közös nyelvi futtatókörnyezet és bármely egyéni eszköz vagy alkalmazás számára elérhető a futtatókörnyezeti tükrözési szolgáltatásokon keresztül.
Konvenció szerint az összes attribútumnév "Attribútum" végződésű. A futtatókörnyezetet megcélzott nyelvek közül azonban számos nyelv , például a Visual Basic és a C# nem követeli meg az attribútum teljes nevének megadását. Ha például inicializálni szeretné System.ObsoleteAttribute, csak Obsolete-ként kell hivatkoznia rá.
Érvényes attribútumargumentumok
Amikor argumentumokat ad át egy attribútumnak, használja az alábbi kifejezések egyikét:
- Állandó kifejezések (literálok,
const/Constértékek és számértékek). - Írja be a kifejezéseket (
typeofa C#-ban,GetTypeVisual Basic). - Névkifejezések (
nameofC# nyelvben,NameOfVisual Basic nyelvben), amelyek fordításkor karakterlánc állandókat hoznak létre. - Olyan attribútumparaméter típusú tömblétrehozási kifejezések, amelyek csak az előző kifejezéseket használják elemértékként.
Az alábbi típusok attribútumparaméter-típusokként érvényesek:
Egyszerű típusok (C# kulcsszó / Visual Basic kulcsszó / .NET futtatókörnyezet típusa):
C# Visual Basic .NET futtatókörnyezet típusa boolBooleanBoolean byteByteByte charCharChar doubleDoubleDouble floatSingleSingle intIntegerInt32 longLongInt64 shortShortInt16 stringStringString object(C#-ban, ha az érték az egyik érvényes attribútumargumentumtípus, vagy ezek egydimenziós tömbje).Type.
Azok az enum típusok, amelyek hozzáférhetők a használati helyen.
Az előző típusok bármelyikének egydimenziós tömbjei.
Megjegyzés:
A típusok sbyte, ushort, uint, ulong, decimal, , nint, , és nuint nem érvényesek attribútumparaméter-típusok, annak ellenére, hogy a konstansokat támogatják.
Az alábbi példák érvényes attribútumargumentumokat mutatnak be:
[MyAttr(true)] // bool literal
[MyAttr(42)] // int literal
[MyAttr("hello")] // string literal
[MyAttr(MyEnum.Value)] // enum value
[MyAttr(typeof(string))] // typeof expression
[MyAttr(nameof(MyClass))] // nameof expression (string constant)
[MyAttr(new int[] { 1, 2, 3 })] // array of constants
[MyAttr(new string[] { "a", "b" })] // array of strings
<MyAttr(True)> ' Boolean literal
<MyAttr(42)> ' Integer literal
<MyAttr("hello")> ' String literal
<MyAttr(MyEnum.Value)> ' Enum value
<MyAttr(GetType(String))> ' GetType expression
<MyAttr(NameOf(MyClass))> ' NameOf expression (string constant)
<MyAttr(New Integer() {1, 2, 3})> ' Array of constants
Az alábbi példák olyan argumentumokat mutatnak be, amelyek fordítóhibát okoznak:
string value = "test";
[MyAttr(value)] // Error CS0182: not a constant expression
[MyAttr(GetValue())] // Error CS0182: method calls aren't allowed
Attribútum alkalmazása metódusra
Az alábbi példakód bemutatja a használat System.ObsoleteAttributemódját, amely elavultként jelöli meg a kódot. A sztring "Will be removed in next version" át lesz adva az attribútumnak. Ez az attribútum egy fordítói figyelmeztetést okoz, amely megjeleníti az átadott sztringet, amikor az attribútum által leírt kódot meghívják.
public class Example
{
// Specify attributes between square brackets in C#.
// This attribute is applied only to the Add method.
[Obsolete("Will be removed in next version.")]
public static int Add(int a, int b)
{
return (a + b);
}
}
class Test
{
public static void Main()
{
// This generates a compile-time warning.
int i = Example.Add(2, 2);
}
}
Public Class Example
' Specify attributes between square brackets in C#.
' This attribute is applied only to the Add method.
<Obsolete("Will be removed in next version.")>
Public Shared Function Add(a As Integer, b As Integer) As Integer
Return a + b
End Function
End Class
Class Test
Public Shared Sub Main()
' This generates a compile-time warning.
Dim i As Integer = Example.Add(2, 2)
End Sub
End Class
Attribútumok alkalmazása a szerelvény szintjén
Ha a szerelvény szintjén szeretne attribútumot alkalmazni, használja a assembly (Assembly Visual Basic) kulcsszót. Az alábbi kód a AssemblyTitleAttribute assembly szinten alkalmazott kódot mutatja.
using System.Reflection;
[assembly:AssemblyTitle("My Assembly")]
Imports System.Reflection
<Assembly: AssemblyTitle("My Assembly")>
Az attribútum alkalmazásakor a karakterlánc "My Assembly" az összeállításjegyzékbe kerül a fájl metaadat-részében. Az attribútumot az IL-szétszerelés (Ildasm.exe) használatával, vagy egy egyéni program létrehozásával tekintheti meg az attribútum lekéréséhez.