我想使用Mono.Cecil将自定义属性添加到方法。自定义属性的构造函数有一个System.Type
。我想弄清楚如何用Mono.Cecil创建这样的自定义属性,以及System.Type参数的参数是什么。如何添加将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);
任何建议,我已经更新的代码?
我不介意回答Mono.Cecil的问题,但你应该让他们更容易阅读和帮助你。提供的代码是混乱的,没有变色,并且可以简化为只有几行,我想你是怎么想的。我要编辑这个问题给你一个例子。 –