Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- internal interface IEventDispatchData<TSender, out TArgs>
- where TArgs : AsyncEventArgs
- {
- Task InvokeAsync();
- }
- internal sealed class EventDispatchData<TSender, TArgs> : IEventDispatchData<TSender, TArgs>
- where TArgs : AsyncEventArgs
- {
- public AsyncEvent<TSender, TArgs> Event { get; }
- public TSender Sender { get; }
- public TArgs EventArgs { get; }
- internal EventDispatchData(AsyncEvent<TSender, TArgs> asyncEvent, TSender sender, TArgs e)
- {
- this.Event = asyncEvent;
- this.Sender = sender;
- this.EventArgs = e;
- }
- public async Task InvokeAsync()
- => await this.Event.InvokeAsync(this.Sender, this.EventArgs).ConfigureAwait(false);
- }
- internal static class EventDispatchData
- {
- public static IEventDispatchData<TSender, TArgs> Create<TSender, TArgs>(AsyncEvent<TSender, TArgs> asyncEvent, TSender sender, TArgs e)
- where TArgs : AsyncEventArgs
- => new EventDispatchData<TSender, TArgs>(asyncEvent, sender, e);
- public static IEventDispatchData<TSender, TArgs> CreateDispatch<TSender, TArgs>(this AsyncEvent<TSender, TArgs> asyncEvent, TSender sender, TArgs e)
- where TArgs : AsyncEventArgs
- => Create(asyncEvent, sender, e);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement