Advertisement
Guest User

Untitled

a guest
Aug 30th, 2015
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. private static void ImplementINotifyPropertyChanged(AssemblyDefinition assemblyDefinition, TypeDefinition typeDefinition)
  2. {
  3.  
  4. //Sınıfa INotifyPropertyChanged interface'ini implement ediyoruz.
  5. typeDefinition.Interfaces.Add(assemblyDefinition.MainModule.Import(typeof(INotifyPropertyChanged)));
  6.  
  7.  
  8. //Sınıfa PropertyChanged isimli PropertyChangedEventHandler tipinden bir field ekliyoruz.
  9. var propertyChangedFieldDefinition = new FieldDefinition("PropertyChanged"
  10. , FieldAttributes.Private
  11. , assemblyDefinition.MainModule.Import(typeof(PropertyChangedEventHandler)));
  12. typeDefinition.Fields.Add(propertyChangedFieldDefinition);
  13.  
  14.  
  15. //Sınıfa PropertyChanged isimli bir event dahil ediyoruz.
  16. var propertyChangedEventDefinition = new EventDefinition("PropertyChanged"
  17. , EventAttributes.None
  18. , assemblyDefinition.MainModule.Import(typeof(PropertyChangedEventHandler)));
  19.  
  20. //Eklediğimiz event'in Remove Metodunu yazıyoruz.
  21. var removePropertyChanged = CreateEventRemoveMethod(assemblyDefinition, propertyChangedFieldDefinition);
  22. propertyChangedEventDefinition.RemoveMethod = removePropertyChanged;
  23. typeDefinition.Methods.Add(removePropertyChanged);
  24.  
  25. //Eklediğimiz event'in Add Metodunu yazıyoruz.
  26.  
  27. var addPropertyChanged = CreateEventAddMethod(assemblyDefinition, propertyChangedFieldDefinition);
  28. propertyChangedEventDefinition.AddMethod = addPropertyChanged;
  29. typeDefinition.Methods.Add(addPropertyChanged);
  30. typeDefinition.Events.Add(propertyChangedEventDefinition);
  31.  
  32. //PropertyChange event'ini tetikleyen metodumuzu yazıp,sınıfımıza dahil ediyoruz.
  33. var propertyChanged = CreateOnPropertyChangedMethod(assemblyDefinition, propertyChangedFieldDefinition);
  34. typeDefinition.Methods.Add(propertyChanged);
  35. //Varolan property'leri değiştirip kendi kodumuzu ekliyoruz.
  36. ReWriteProperties(typeDefinition, propertyChanged);
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement