我想使用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的問題,但你應該讓他們更容易閱讀和幫助你。提供的代碼是混亂的,沒有變色,並且可以簡化爲只有幾行,我想你是怎麼想的。我要編輯這個問題給你一個例子。 –