diff --git a/src/Perspex.Base/Utilities/WeakSubscriptionManager.cs b/src/Perspex.Base/Utilities/WeakSubscriptionManager.cs index a6b188c888..9adb9ff3ca 100644 --- a/src/Perspex.Base/Utilities/WeakSubscriptionManager.cs +++ b/src/Perspex.Base/Utilities/WeakSubscriptionManager.cs @@ -35,7 +35,7 @@ namespace Perspex.Utilities readonly SubscriptionDic _sdic; private readonly object _target; private readonly string _eventName; - private readonly EventHandler _delegate; + private readonly Delegate _delegate; public Subscription(SubscriptionDic sdic, object target, string eventName) { _sdic = sdic; @@ -47,7 +47,10 @@ namespace Perspex.Utilities Accessors[t] = evDic = new Dictionary(); if (!evDic.TryGetValue(eventName, out _info)) evDic[eventName] = _info = t.GetRuntimeEvent(eventName); - _info.AddEventHandler(target, _delegate = OnEvent); + + var del = new Action(OnEvent); + _delegate = del.GetMethodInfo().CreateDelegate(_info.EventHandlerType, del.Target); + _info.AddEventHandler(target, _delegate); } void Destroy()