2013-03-29 32 views
5

Tôi muốn thực hiện một giao diện tự động xóa tất cả các lĩnh vực ở địa phương, cho đến nay tôi có:Bạn sẽ phát ra giá trị mặc định của một loại như thế nào?

// 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); 

Làm thế nào để thiết lập các bước cuối cùng để lưu các giá trị mặc định trên lĩnh vực này?

+1

Đây có phải là quan tâm? http://stackoverflow.com/questions/10400358/how-to-translate-defaultsometype-from-c-sharp-to-cil –

+0

Yup giúp bạn. Trên thực tế, tôi phát hiện ra rằng phương pháp chính xác có thể là để phát ra Activator.CreateInstance (T). Vì điều đó sẽ tự động khởi tạo đối tượng mặc định. – sircodesalot

+0

lớp hoặc cấu trúc? Nếu sau này, bạn có thể làm 'this = new StructName()'. – leppie

Trả lời

4

cái gì đó như:

clearMethodILGen.Emit(OpCodes.Ldfld, localField); 
clearMethodILGen.Emit(OpCodes.Initobj, localField.FieldType); 
Các vấn đề liên quan