-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMiddleware.cs
More file actions
32 lines (27 loc) · 820 Bytes
/
Middleware.cs
File metadata and controls
32 lines (27 loc) · 820 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System;
namespace Chain.NetCore.Optimized
{
public abstract class Middleware
{
private EventHandler<MiddlewareEventArgs> EventHandler;
public abstract void MiddlewareHandler(object sender, MiddlewareEventArgs e);
protected Middleware Next { get; set; }
protected Middleware()
{
EventHandler += MiddlewareHandler;
}
public void Invoke(MiddlewareEventArgs args)
{
OnInvoke(args);
}
public virtual void OnInvoke(MiddlewareEventArgs e)
{
Console.WriteLine(this.ToString());
EventHandler?.Invoke(this, e);
}
public Middleware Use<TMiddleWare>() where TMiddleWare: Middleware, new ()
{
return Next = new TMiddleWare();
}
}
}