Stosowanie atrybutów
W celu zastosowania atrybutu do elementu kodu należy wykonać procedurę opisaną poniżej.
Zdefiniuj nowy atrybut lub użyj istniejącego atrybutu platformy .NET.
Zastosuj atrybut do elementu kodu, umieszczając go bezpośrednio przed elementem.
Każdy język ma własną składnię atrybutów. W językach C++ i C# atrybut jest ujęty w nawiasy kwadratowe i oddzielony od elementu znakiem odstępu, który może zawierać znak podziału wiersza. W języku Visual Basic atrybut jest ujęty w nawiasy kątowe i musi się znajdować w tym samym wierszu logicznym. Jeśli trzeba użyć podziału wiersza, można wstawić znak kontynuacji wiersza.
Określ parametry pozycyjne i nazwane atrybutu.
Parametry pozycyjne są wymagane i muszą znajdować się przed dowolnymi nazwanych parametrami; odpowiadają one parametrom jednego z konstruktorów atrybutu. Nazwane parametry są opcjonalne i odpowiadają właściwościom odczytu/zapisu atrybutu. W języku C++i C#określ
name=value
dla każdego opcjonalnego parametru, gdziename
jest nazwą właściwości. W języku Visual Basic określ wartośćname:=value
.
Atrybut jest emitowany do metadanych podczas kompilowania kodu. Jego udostępnianie środowisku uruchomieniowemu języka wspólnego i niestandardowym narzędziom lub aplikacjom odbywa się za pośrednictwem usług odbicia środowiska uruchomieniowego.
Zgodnie z konwencją wszystkie nazwy atrybutów kończą się ciągiem "Attribute". Jednak niektóre języki przeznaczone dla tego środowiska uruchomieniowego, np. Visual Basic i C#, nie wymagają określania pełnej nazwy atrybutu. Jeśli na przykład chcesz zainicjować System.ObsoleteAttributemetodę , musisz odwołać się tylko do niej jako przestarzałe.
Stosowanie atrybutu do metody
W poniższym przykładzie kodu pokazano, jak używać elementu System.ObsoleteAttribute, który oznacza kod jako przestarzały. Ciąg tekstowy "Will be removed in next version"
jest przekazywany do atrybutu. Atrybut sprawia, że podczas wywoływania kodu opisywanego przez atrybut kompilator generuje ostrzeżenie pokazujące przekazany ciąg.
public ref class Example
{
// Specify attributes between square brackets in C#.
// This attribute is applied only to the Add method.
public:
[Obsolete("Will be removed in next version.")]
static int Add(int a, int b)
{
return (a + b);
}
};
ref class Test
{
public:
static void Main()
{
// This generates a compile-time warning.
int i = Example::Add(2, 2);
}
};
int main()
{
Test::Main();
}
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
Stosowanie atrybutów na poziomie zestawu
Jeśli chcesz zastosować atrybut na poziomie zestawu, użyj słowa kluczowego assembly
(Assembly
w Visual Basic). Poniższy kod przedstawia atrybut AssemblyTitleAttribute zastosowany na poziomie zestawu.
using namespace System::Reflection;
[assembly:AssemblyTitle("My Assembly")];
using System.Reflection;
[assembly:AssemblyTitle("My Assembly")]
Imports System.Reflection
<Assembly: AssemblyTitle("My Assembly")>
Zastosowanie tego atrybutu sprawia, że w manifeście zestawu w części pliku określającej metadane jest umieszczany ciąg "My Assembly"
. Atrybut można wyświetlić przy użyciu dezasemblera IL (Ildasm.exe) lub przez utworzenie niestandardowego programu w celu pobrania atrybutu.