Разработка компиляторов

       

Пользовательские атрибуты


Естественно, что программист может определять и собственные, пользовательские атрибуты. Для этого достаточно создать класс, унаследованный от System.Attribute . В следующем примере мы покажем создание и использование атрибута, задающего гиперссылку на страничку с информацией о классе и его методах:

public class HelpUrlAttribute : System.Attribute { public HelpUrlAttribute(string url) { … } public string Url { get {…} } public string Tag { get {…} set {…} } } [HelpUrl("http://SomeUrl/MyClass")] class MyClass {} [HelpUrl("http://SomeUrl/MyClass", Tag="ctor")] class MyClass {}

Информация, записанная в пользовательских атрибутах, может быть использована во время исполнения программы с помощью механизма рефлексии (см. следующий пример).

Type type = typeof(MyClass); foreach(object attr in type.GetCustomAttributes() ) { if ( attr is HelpUrlAttribute ) { HelpUrlAttribute ha = (HelpUrlAttribute) attr; myBrowser.Navigate( ha.Url ); } }

Еще одним перспективным направлением для использования атрибутов является аспектно-ориентированное программирование - подход, в котором программист специально описывает степень участия каждой компоненты в общей системе в целях упрощения последующих изменений при сопровождении (подробнее об этом см. доклад Gregor Kiczales на ECOOP'99 Workshop on Aspect-Oriented Programming или страницу, посвященную этой методологии: http://aosd.net/)



Содержание раздела