| @@ -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方法 | |||