5
我想要實現自動清除所有本地領域的接口,所以到目前爲止,我有:你會如何發出一個類型的默認值?
// Implement IClearable
dynamicType.AddInterfaceImplementation(typeof(IClearable));
MethodBuilder clearnMethodBuilder = dynamicType.DefineMethod("Clear", MethodAttributes.Public | MethodAttributes.Virtual, CallingConventions.Standard);
ILGenerator clearMethodILGen = clearnMethodBuilder.GetILGenerator();
foreach (FieldBuilder localField in fields)
{
clearMethodILGen.Emit(OpCodes.Ldarg_0);
clearMethodILGen.Emit(OpCodes.Ldfld, localField);
clearMethodILGen.Emit(OpCodes.??, Profit??);
}
clearMethodILGen.Emit(OpCodes.Ret);
如何設置的最後一步,保存在字段的默認值?
這是興趣? http://stackoverflow.com/questions/10400358/how-to-translate-defaultsometype-from-c-sharp-to-cil –
是的,這有助於。其實,我發現正確的方法可能是發出Activator.CreateInstance(T)。因爲那會自動實例化默認對象。 – sircodesalot
類或結構?如果是後者,則可以執行'this = new StructName()'。 – leppie