Mono.Cecil を使用してカスタム属性をメソッドに追加したいと考えています。カスタム属性のコンストラクターにはSystem.Type
. Mono.Cecil を使用してそのようなカスタム属性を作成する方法と、System.Type パラメーターの引数は何かを理解しようとしています。
私の属性は次のように定義されています。
public class SampleAttribute : Attribute {
public SampleAttribute (Type type) {}
}
これまでのところ、私は試しました:
var module = ...;
var method = ...;
var sampleAttributeCtor = ...;
var attribute = new CustomAttribute (sampleAttributeCtor);
attribute.ConstructorArguments.Add (
new ConstructorArgument (module.TypeSystem.String, module.GetType ("TestType").FullName));
しかし、うまくいかないようです。何か案が?
次のようにコードを更新しました
var module=targetExe.MainModule;
var anothermodule=sampleDll.MainModule;
var custatt = new CustomAttribute(ctorReference);
var corlib =module .AssemblyResolver.Resolve((AssemblyNameReference)module.TypeSystem.Corlib);
var systemTypeRef = module.Import(corlib.MainModule .GetType("System.Type"));
custatt.ConstructorArguments.Add(new CustomAttributeArgument(systemTypeRef, module.Import(anothermodule.GetType("SampleDll.Annotation"))));
methodDef.CustomAttributes.Add(custatt);
助言がありますか?