Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static MethodDefinition CreateEventAddMethod(AssemblyDefinition assemblyDefinition,
- FieldReference propertyChangedFieldDefinition)
- {
- var addMethodDefinition = assemblyDefinition.MainModule.Import(typeof(Delegate).GetMethod("Combine",
- new[] { typeof(Delegate), typeof(Delegate) }));
- var addPropertyChanged = new MethodDefinition("add_PropertyChanged", MethodAttributes.Public |
- MethodAttributes.SpecialName |
- MethodAttributes.NewSlot |
- MethodAttributes.HideBySig |
- MethodAttributes.Virtual |
- MethodAttributes.Final,
- assemblyDefinition.MainModule.Import(typeof(void)));
- addPropertyChanged.Parameters.Add(
- new ParameterDefinition(assemblyDefinition.MainModule.Import(typeof(PropertyChangedEventHandler))));
- addPropertyChanged.Overrides.Add(
- assemblyDefinition.MainModule.Import(typeof(INotifyPropertyChanged).GetMethod("add_PropertyChanged")));
- var il = addPropertyChanged.Body.GetILProcessor();
- il.Emit(OpCodes.Ldarg_0);
- il.Emit(OpCodes.Ldarg_0);
- il.Emit(OpCodes.Ldfld, propertyChangedFieldDefinition);
- il.Emit(OpCodes.Ldarg_1);
- il.Emit(OpCodes.Call, addMethodDefinition);
- il.Emit(OpCodes.Castclass, assemblyDefinition.MainModule.Import(typeof(PropertyChangedEventHandler)));
- il.Emit(OpCodes.Stfld, propertyChangedFieldDefinition);
- il.Emit(OpCodes.Ret);
- return addPropertyChanged;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement