私は、インターフェイスを実装するインターフェイスに基づいてプロキシクラスを作成するジェネレータクラスを作成しました。Reflection Emit:属性インスタンスをCustomAttributeBuilderまたはCustomAttributeDataに変換する方法
Build a Proxy class based on Interface without implementing itの投稿を参照してください。
私はCustomAttributeData.GetCustomAttributes(MemberInfo target)
に精通しています。私はInterfaceのメンバーを読み、プロキシにインポートするのに成功しました。
追加の属性を実行時に生成されたクラスに注入したいと思います。 属性インスタンスをプロキシに挿入するよう要求しています。例えば
:(それは空のコンストラクタを有しているが、プロパティは読み取り専用)、new ObsoleteAttribute("Demo", true)
、そして私はそれを変換する:
開発者が値としてこれを渡すことができ
return new CustomAttributeBuilder(
attribute.GetType().GetConstructor(Type[] {typeof (string), typeof (bool)}),
new object[] {"Demo", true},
new FieldInfo[0],
new object[0]);
私は何が与えられたのか分かりません。
すでにクラス( 'type'が)、またはあなたが現在構築しているクラス(' TypeBuilder')を生成するための属性を追加する方法を求めています? – svick
私は現在それを構築しています – Ofir
'CustomAttributeBuilder'コンストラクタのオーバーロードに関して特に混乱しているものはありますか?私は彼らが自明であると思ったでしょう。 – kvb