0 Tage Serie
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)]();
}
// Usage
var 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.