Procházet zdrojové kódy

例行提交

master
李敢 před 6 roky
rodič
revize
36f9e141ed
1 změnil soubory, kde provedl 12 přidání a 2 odebrání
  1. 12
    2
      EmitCreateDynamicProxy/DynamicProxyGenerator.cs

+ 12
- 2
EmitCreateDynamicProxy/DynamicProxyGenerator.cs Zobrazit soubor

@@ -178,14 +178,24 @@ namespace EmitCreateDynamicProxy
ilGetMethod.Emit(OpCodes.Ret);
//il of set method
ILGenerator ilSetMethod = methodSet.GetILGenerator();
var nullLabel = ilSetMethod.DefineLabel();
ilSetMethod.Emit(OpCodes.Ldarg_0);
ilSetMethod.Emit(OpCodes.Ldarg_1);
ilSetMethod.Emit(OpCodes.Stfld, fieldBuilder);
ilSetMethod.Emit(OpCodes.Ldarg_0);
ilSetMethod.Emit(OpCodes.Ldfld, fbModifiedPropertyNames);
ilSetMethod.Emit(OpCodes.Ldstr, propertyInfo.Name);
ilSetMethod.Emit(OpCodes.Callvirt, modifiedPropertyNamesType.GetMethod("Add", new Type[] { typeof(string) }));
ilSetMethod.Emit(OpCodes.Dup);
ilSetMethod.Emit(OpCodes.Brtrue_S, nullLabel);
ilSetMethod.Emit(OpCodes.Pop);
var retLabel = ilSetMethod.DefineLabel();
ilSetMethod.Emit(OpCodes.Br_S, retLabel);
ilSetMethod.MarkLabel(nullLabel);
ilSetMethod.Emit(OpCodes.Ldarg_0);
ilSetMethod.Emit(OpCodes.Ldstr, propertyInfo.Name);
ilSetMethod.Emit(OpCodes.Newobj, typeof(PropertyChangedEventArgs));
ilSetMethod.Emit(OpCodes.Callvirt, pt.GetMethod("Invoke", new Type[] { typeof(object), typeof(PropertyChangedEventArgs) }));
ilSetMethod.Emit(OpCodes.Nop);
il.MarkLabel(retLabel);
ilSetMethod.Emit(OpCodes.Ret);

//设置属性的Get Set方法

Načítá se…
Zrušit
Uložit