2 using System.Reflection;
6 internal sealed class WeakEventHandler<TEventArgs> where TEventArgs : EventArgs
8 private readonly WeakReference _targetReference;
9 private readonly MethodInfo _method;
11 public WeakEventHandler(EventHandler<TEventArgs> callback)
13 _method = callback.GetMethodInfo();
14 _targetReference = new WeakReference(callback.Target, true);
17 public void Handler(object sender, TEventArgs e)
19 var target = _targetReference.Target;
22 var callback = (Action<object, TEventArgs>)_method.CreateDelegate(typeof(Action<object, TEventArgs>), target);