一連のアセンブリを反復処理し、型とそのメタデータを検出してからコードを生成することにより、CCI-Metadata を使用してコード ジェネレーターを作成しようとしています。カスタム属性を元の型のメタデータに追加することで、コード生成を制御できるようにしたいと考えています。
何かのようなもの:
[GenerateSpecialClass(true, "foo", IsReallySpecial=false)]
public class MyClass { ... }
INamedTypeDefinition があり、Attributes プロパティから IEnumerable を取得します。ここから、カスタム属性の値とそのプロパティを取得するために何をすべきかわかりません。
誰かが私にコード サンプルを与えることができます: 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;
}
}
どんな助けでも大歓迎です。これを他のインターフェイスにキャストして、魔法のようなことをすると思います。しかし、それを使って何かをするヘルパーを見つけることができず、実装/モデルの階層を完全に理解していません。