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