public string Remark { get {

return pri_remark;

}

}

}

[RemarkAttribute('В этом классе используется атрибут.',

Supplement = 'Это дополнительная информация.')] class UseAttrib {

// ...

}

class NamedParamDemo { static void Main() {

Type t = typeof(UseAttrib);

Console.Write('Атрибуты в классе ' + t.Name + ': '); object[] attribs = t.GetCustomAttributes (false); foreach(object о in attribs) {

Console.WriteLine (o);

}

// Извлечь атрибут RemarkAttribute.

Type tRemAtt = typeof(RemarkAttribute);

RemarkAttribute ra = (RemarkAttribute)

Attribute.GetCustomAttribute(t, tRemAtt);

Console.Write('Примечание: ');

Console.WriteLine(ra.Remark);

Console.Write('Дополнение: ') ;

Console.WriteLine(ra.Supplement);

}

}

При выполнении этой программы получается следующий результат.

Атрибуты в классе UseAttrib: RemarkAttribute Примечание: В этом классе используется атрибут.

Дополнение: Это дополнительная информация.

Прежде чем перейти к следующему вопросу, следует особо подчеркнуть, что поле pri_remark нельзя использовать в качестве именованного параметра, поскольку оно

закрыто в классе RemarkAttribute. Свойство Remark также нельзя использовать в качестве именованного параметра, потому что оно доступно только для чтения. Напомним, что в качестве именованных параметров могут служить только открытые поля и свойства.

Открытое и доступное только для чтения свойство может использоваться в качестве именованного параметра таким же образом, как и открытое поле. В качестве примера ниже показано, как автоматически реализуемое свойство Priority типа int вводится в класс RemarkAttribute.

// Использовать свойство в качестве именованного параметра атрибута.

using System;

using System.Reflection;

[AttributeUsage(AttributeTargets.All)] public class RemarkAttribute : Attribute {

string pri_remark; // базовое поле свойства Remark

public string Supplement; // это именованный параметр

public RemarkAttribute(string comment) { pri_remark = comment;

Supplement = 'Отсутствует';

Priority = 1;

}

public string Remark { get {

return pri_remark;

}

}

// Использовать свойство в качестве именованного параметра, public int Priority { get; set; }

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату