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.