Параметры конструктора для атрибутов

Параметры конструктора для атрибутов

Мы видим, что атрибут [Obsolete] может принимать нечто похожее на параметр конструктора. Если вы посмотрите на формальное определение атрибута [Obsolete] в окне определения программного кода Visual Studio 2005, то увидите, что данный класс действительно предлагает конструктор, получающий System.String.

public sealed сlass ObsoleteAttribute: System.Attribute {

 public bool IsError { get; }

 public string Message { get; }

 public ObsoleteAttribute(string message, bool error);

 public ObsoleteAttribute(string message);

 public ObsoleteAttribute();

}

Когда вы указываете параметры конструктора для атрибута, атрибут не размещается в памяти до тех пор, пока эти параметры не отобразятся другим типом или внешним программным средством. Строки, определенные на уровне атрибута, просто запоминаются в компоновочном блоке, как часть метаданных.