Console.WriteLine("Метод {0} не имеет атрибута Developer.", MyMemberInfo(i).ToString)
Else
Console.WriteLine("Атрибут Имя на уровне метода {0}: {1}.", MyMemberInfo(i).ToString, att.Name)
Console.WriteLine("Атрибут Уровень на уровне метода {0}: {1}.", MyMemberInfo(i).ToString, att.Level)
Console.WriteLine("Атрибут Проверено на уровне метода {0}: {1}.", MyMemberInfo(i).ToString, att.Reviewed)
End If
Next i
End Sub
Для доступа к методам и полям проверяемого класса используются методы класса System::Type. В этом примере сначала через Type запрашивается информация об атрибутах, определенных на уровне класса, затем, через метод Type.GetMethods получается информация обо всех атрибутах, определенных на уровне методов. Эта информация помещается в массив объектов типа System.Reflection.MemberInfo. Если нужны атрибуты свойств, используется метод Type.GetProperties, а для конструкторов – Type.GetConstructors. Класс Type имеет множество методов для доступа к элементам типа, здесь описана только очень небольшая часть.
Пример
Демонстрационная программа, показывающая, как можно получать информацию из секций метаданных, написана на C#. На рисунке показана закладка, на которой можно увидеть значения атрибутов для сборки, на других закладках показывается аналогичная информация. Я не буду подробно описывать пример, кому надо, может скачать и скомпилировать его. Пример достаточно прост и разобраться в том, как получаются атрибуты, ни для кого не составит труда.
Заключение
Как видите, система метаданных в среде .NET достаточно хорошо продумана, и пользоваться ей легко и удобно.
Это все на сегодня. Пока!
Алекс Jenter [email protected]Duisburg, 2001. Публикуемые в рассылке материалы принадлежат сайту RSDN.