Я пытаюсь использовать CCI-метаданные для создания генератора кода, перебирая наборы сборок, обнаруживая типы и их метаданные, а затем генерируя код. Я хотел бы иметь возможность контролировать генерацию кода, прикрепляя настраиваемые атрибуты к метаданным исходных типов.
Что-то вроде:
[GenerateSpecialClass(true, "foo", IsReallySpecial=false)]
public class MyClass { ... }
У меня есть INamedTypeDefinition и я получаю IEnumerable из свойства Attributes. Отсюда я не могу понять, что нужно сделать, чтобы получить значение пользовательского атрибута и его свойств.
Может ли кто-нибудь дать мне пример кода: учитывая атрибут ICustomAttribute, как я могу получить значения из моего примера атрибута. Предположим, это определение:
public GenericSpecialClassAttribute : Attribute
{
public bool Prop1 { get; set; }
public string Prop2 {get; set; }
public bool IsReallySpecial {get; set; }
public GenericSpecialClassAttribute(bool prop1, string prop2)
{
Prop1 = prop1;
Prop2 = prop2;
}
}
Любая помощь будет принята с благодарностью. Я предполагаю, что приведу это к какому-то другому интерфейсу и сделаю с ним что-нибудь волшебное; но я не смог найти помощника, который бы что-нибудь делал с ним и не полностью понимал иерархию реализации / модели.