Advertisement
Guest User

Untitled

a guest
Aug 30th, 2015
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. private static MethodDefinition CreateEventAddMethod(AssemblyDefinition assemblyDefinition,
  2. FieldReference propertyChangedFieldDefinition)
  3. {
  4. var addMethodDefinition = assemblyDefinition.MainModule.Import(typeof(Delegate).GetMethod("Combine",
  5. new[] { typeof(Delegate), typeof(Delegate) }));
  6. var addPropertyChanged = new MethodDefinition("add_PropertyChanged", MethodAttributes.Public |
  7. MethodAttributes.SpecialName |
  8. MethodAttributes.NewSlot |
  9. MethodAttributes.HideBySig |
  10. MethodAttributes.Virtual |
  11. MethodAttributes.Final,
  12. assemblyDefinition.MainModule.Import(typeof(void)));
  13. addPropertyChanged.Parameters.Add(
  14. new ParameterDefinition(assemblyDefinition.MainModule.Import(typeof(PropertyChangedEventHandler))));
  15. addPropertyChanged.Overrides.Add(
  16. assemblyDefinition.MainModule.Import(typeof(INotifyPropertyChanged).GetMethod("add_PropertyChanged")));
  17. var il = addPropertyChanged.Body.GetILProcessor();
  18. il.Emit(OpCodes.Ldarg_0);
  19. il.Emit(OpCodes.Ldarg_0);
  20. il.Emit(OpCodes.Ldfld, propertyChangedFieldDefinition);
  21. il.Emit(OpCodes.Ldarg_1);
  22. il.Emit(OpCodes.Call, addMethodDefinition);
  23. il.Emit(OpCodes.Castclass, assemblyDefinition.MainModule.Import(typeof(PropertyChangedEventHandler)));
  24. il.Emit(OpCodes.Stfld, propertyChangedFieldDefinition);
  25. il.Emit(OpCodes.Ret);
  26. return addPropertyChanged;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement