Для того чтобы использовать существующий встроенный класс для назначаемого методу атрибута, следует:
1. Создать метод, использующий атрибут (например, метод, при каждом вызове которого компилятор будет формировать сообщение Warning с указанным в атрибуте кодом);
2. Ввести перед определением метода в квадратных скобках имя класса атрибута (например, класса ObsoleteAttribute).
Например, встроенный класс System.ObsoleteAttribute позволяет помечать код и задавать информацию, например, "Будет удалено в следующей версии", которая будет отображаться как Warning во время компиляции приложения. Этот класс предназначается для возможности указания некоторого кода модуля как "устаревшего".
public class MainApp
{ public static void Main()
{ //На этой строке компилятор выдаст предупреждение
int MyInt = Add(2,2);
}
//Этот атрибут применяется только к методу Add
[Obsolete("В следующей версии метод будет удален")]
public static int Add(int a, int b)
{ return (a + b);
}
}
Компилятор будет выдавать предупреждение при каждом вызове метода Add, которому назначен соответствующий атрибут. Например:
c:\c#_project\pr1\ MainApp.cs(23,4): warning
CS0618: 'pr1. MainApp.Add()' is obsolete:
' В следующей версии метод будет удален '
Для применения атрибутов на уровне сборок используется ключевое слово Assembly. Следующий пример показывает, как используется атрибут AssemblyNameAttribute:
using System.Reflection;
[assembly:AssemblyName("Моя сборка")]
При компиляции кода строка "Моя сборка" помещается в манифест сборки в секции метаданных. Этот атрибут можно увидеть с помощью дизассемблера MSIL (Ildasm.exe) или с помощью пользовательских средств.
Для применения атрибутов на уровне модулей используется ключевое слово Module, в остальном все как на уровне сборок.