我想不出如何將自定義屬性添加到使用Mono.Cecil能 ,我想添加的屬性的方法是這樣的:使用mono.cecil添加自定義屬性?
.custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = (01 00 00 00)
有誰知道如何添加自定義屬性
我想不出如何將自定義屬性添加到使用Mono.Cecil能 ,我想添加的屬性的方法是這樣的:使用mono.cecil添加自定義屬性?
.custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = (01 00 00 00)
有誰知道如何添加自定義屬性
這其實很簡單。
ModuleDefinition module = ...;
MethodDefinition targetMethod = ...;
MethodReference attributeConstructor = module.Import(
typeof(DebuggerHiddenAttribute).GetConstructor(Type.EmptyTypes));
targetMethod.CustomAttributes.Add(new CustomAttribute(attributeConstructor));
module.Write(...);
這是我拿,
MethodDefinition methodDefinition = ...;
var module = methodDefinition.DeclaringType.Module;
var attr = module.Import(typeof (System.Diagnostics.DebuggerHiddenAttribute));
var attrConstructor = attr.Resolve().Constructors.GetConstructor(false, new Type[] {});
methodDefinition.CustomAttributes.Add(new CustomAttribute(attrConstructor));
我注意到JB Evain的片段是略有不同。我不確定這是因爲他是使用更新版本的Cecil還是我錯了:)
在我的Cecil版本中,Import
返回一個TypeReference
,而不是構造函數。
非常感謝,解決了! – method
@JbEvain +1從我開發這個真棒圖書館。我訂閱了您的github更改提要,所以我知道仍在逐步傾注的工作 – sehe
@sehe感謝您的客氣話! –