|
|
|
@ -11,7 +11,7 @@ public interface IWeakEventSubscriber<in TEventArgs> where TEventArgs : EventArg |
|
|
|
void OnEvent(object? sender, WeakEvent ev, TEventArgs e); |
|
|
|
} |
|
|
|
|
|
|
|
public class WeakEventSubscriber<TEventArgs> : IWeakEventSubscriber<TEventArgs> where TEventArgs : EventArgs |
|
|
|
public sealed class WeakEventSubscriber<TEventArgs> : IWeakEventSubscriber<TEventArgs> where TEventArgs : EventArgs |
|
|
|
{ |
|
|
|
public event Action<object?, WeakEvent, TEventArgs>? Event; |
|
|
|
|
|
|
|
@ -19,4 +19,21 @@ public class WeakEventSubscriber<TEventArgs> : IWeakEventSubscriber<TEventArgs> |
|
|
|
{ |
|
|
|
Event?.Invoke(sender, ev, e); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public sealed class TargetWeakEventSubscriber<TTarget, TEventArgs> : IWeakEventSubscriber<TEventArgs> where TEventArgs : EventArgs |
|
|
|
{ |
|
|
|
private readonly TTarget _target; |
|
|
|
private readonly Action<TTarget, object?, WeakEvent, TEventArgs> _dispatchFunc; |
|
|
|
|
|
|
|
public TargetWeakEventSubscriber(TTarget target, Action<TTarget, object?, WeakEvent, TEventArgs> dispatchFunc) |
|
|
|
{ |
|
|
|
_target = target; |
|
|
|
_dispatchFunc = dispatchFunc; |
|
|
|
} |
|
|
|
|
|
|
|
void IWeakEventSubscriber<TEventArgs>.OnEvent(object? sender, WeakEvent ev, TEventArgs e) |
|
|
|
{ |
|
|
|
_dispatchFunc(_target, sender, ev, e); |
|
|
|
} |
|
|
|
} |
|
|
|
|