csharp / expert
Snippet
Strukturelle Abhängigkeitsauflösung mittels Typ-Mapping
Der Aufbau einer eigenen Dependency-Resolution-Engine demonstriert die Kernmechanismen moderner Architekturmuster. Diese Implementierung nutzt ein funktionales Register, um Schnittstellen ohne externe Abhängigkeiten auf Implementierungs-Factories abzubilden.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
11
12
13
public class MiniContainer{private readonly Dictionary<Type, Func<object>> _registry = new();public void Register<T>(Func<T> factory) => _registry[typeof(T)] = () => factory()!;public T Resolve<T>() => (T)_registry[typeof(T)]();}// Usagevar container = new MiniContainer();container.Register<IDatabase>(() => new SqlDatabase());var db = container.Resolve<IDatabase>();
Erklärung
1
Dictionary<Type, Func<object>>
Speichert ein Mapping von Service-Typen zu deren Erstellungslogik.
2
(T)_registry[typeof(T)]()
Ruft die Factory auf und castet das Ergebnis in den angeforderten Typ.