Net Reflection Olaylar (Events) ve Delegelerle Çalışma
2023-05-05
Reflection, çalışma zamanında olaylar (events) ve delegelerle işlem yapmak için kullanılabilir. Bu makalede, Reflection ile olaylar ve delegeleri nasıl kullanabileceğinizi inceleyeceğiz.
Olaylarla (Events) Çalışma
- Olayları Elde Etme Belirli bir türün olaylarını elde etmek için, ‘Type.GetEvent()’ ve ‘Type.GetEvents()’ metodlarını kullanabilirsiniz.
Type myType = typeof(MyClass);
EventInfo myEvent = myType.GetEvent("MyEvent");
EventInfo[] events = myType.GetEvents();
- Olaylara Yöntemleri Bağlama (Event Handlers) Olaylara yöntemleri bağlamak için, ‘EventInfo.AddEventHandler()’ metodunu kullanın.
MyClass instance = new MyClass();
MethodInfo handlerMethod = typeof(Program).GetMethod("MyEventHandler");
Delegate handlerDelegate = Delegate.CreateDelegate(myEvent.EventHandlerType, handlerMethod);
myEvent.AddEventHandler(instance, handlerDelegate);
Delegelerle Çalışma
- Delegate Türlerini Elde Etme Belirli bir delegate türünü elde etmek için, ‘Type.GetType()’ metodunu kullanarak türün tam adını belirtin.
Type delegateType = Type.GetType("Namespace.MyDelegate, AssemblyName");
- Delegate Örneklerini Oluşturma Delegate örneklerini dinamik olarak oluşturmak için, ‘Delegate.CreateDelegate()’ metodunu kullanın.
MethodInfo methodToWrap = typeof(MyClass).GetMethod("MyMethod");
Delegate myDelegate = Delegate.CreateDelegate(delegateType, methodToWrap);
- Delegate’leri Çağırma Delegate’leri çağırmak için, ‘Delegate.DynamicInvoke()’ metodunu kullanın.
object result = myDelegate.DynamicInvoke(new object[] { arg1, arg2 });
Bu makalede, Reflection ile olaylar ve delegelerle çalışmayı ele aldık. Olayların nasıl elde edileceğini ve yöntemlerin nasıl bağlanacağını, ayrıca delegate türlerinin nasıl elde edileceğini, örneklerinin nasıl oluşturulacağını ve delegate’lerin nasıl çağrılacağını inceledik.