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 –
Yup, который помогает. Фактически, я обнаружил, что правильным методом может быть испускание Activator.CreateInstance (T). Так как это автоматически создаст экземпляр объекта по умолчанию. – sircodesalot
класс или структура? Если последнее, вы можете сделать 'this = new StructName()'. – leppie