0 Tage Serie
csharp / intermediate
Snippet

Aufbau einer benutzerdefinierten Middleware-Pipeline

Middleware-Muster ermöglichen es, Verhaltensweisen um eine Kernlogik zu verketten. Diese Implementierung verwendet Delegaten und Funktionen höherer Ordnung, um einen Handler zu umschließen – ein gängiges Architekturmuster.

snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public delegate void WorkHandler(string context);
public class PipelineBuilder
{
public WorkHandler Build(List<Func<WorkHandler, WorkHandler>> middlewares)
{
WorkHandler pipeline = (ctx) => Console.WriteLine("Final Target: " + ctx);
for (int i = middlewares.Count - 1; i >= 0; i--)
{
pipeline = middlewares[i](pipeline);
}
return pipeline;
}
}
Erklärung
1
public delegate void WorkHandler(string context);
Definiert die Signatur für die Funktionen, die den Kontext verarbeiten werden.
2
pipeline = middlewares[i](pipeline);
Umschließt die aktuelle Pipeline mit der nächsten Middleware in der Liste.