Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static void ImplementINotifyPropertyChanged(AssemblyDefinition assemblyDefinition, TypeDefinition typeDefinition)
- {
- //Sınıfa INotifyPropertyChanged interface'ini implement ediyoruz.
- typeDefinition.Interfaces.Add(assemblyDefinition.MainModule.Import(typeof(INotifyPropertyChanged)));
- //Sınıfa PropertyChanged isimli PropertyChangedEventHandler tipinden bir field ekliyoruz.
- var propertyChangedFieldDefinition = new FieldDefinition("PropertyChanged"
- , FieldAttributes.Private
- , assemblyDefinition.MainModule.Import(typeof(PropertyChangedEventHandler)));
- typeDefinition.Fields.Add(propertyChangedFieldDefinition);
- //Sınıfa PropertyChanged isimli bir event dahil ediyoruz.
- var propertyChangedEventDefinition = new EventDefinition("PropertyChanged"
- , EventAttributes.None
- , assemblyDefinition.MainModule.Import(typeof(PropertyChangedEventHandler)));
- //Eklediğimiz event'in Remove Metodunu yazıyoruz.
- var removePropertyChanged = CreateEventRemoveMethod(assemblyDefinition, propertyChangedFieldDefinition);
- propertyChangedEventDefinition.RemoveMethod = removePropertyChanged;
- typeDefinition.Methods.Add(removePropertyChanged);
- //Eklediğimiz event'in Add Metodunu yazıyoruz.
- var addPropertyChanged = CreateEventAddMethod(assemblyDefinition, propertyChangedFieldDefinition);
- propertyChangedEventDefinition.AddMethod = addPropertyChanged;
- typeDefinition.Methods.Add(addPropertyChanged);
- typeDefinition.Events.Add(propertyChangedEventDefinition);
- //PropertyChange event'ini tetikleyen metodumuzu yazıp,sınıfımıza dahil ediyoruz.
- var propertyChanged = CreateOnPropertyChangedMethod(assemblyDefinition, propertyChangedFieldDefinition);
- typeDefinition.Methods.Add(propertyChanged);
- //Varolan property'leri değiştirip kendi kodumuzu ekliyoruz.
- ReWriteProperties(typeDefinition, propertyChanged);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement