Ich möchte einen Dienst basierend auf dem HTTP-Header-Wert injizieren. Also habe ich 2 Klassen - DbDataProvider und InMemDataProvider, beide sind von IDataProvider implementiert. Immer wenn ein API-Aufruf erfolgt, wird vom Client ein Header übergeben, der festlegt, ob DbDataProvider erforderlich oder InMemDataProvider erforderlich ist. Wie erreiche ich das? Kurz gesagt, ich muss Service in der ServiceCollection in einem der Middlewares injizieren. Ist das möglich?In Dienst in Middleware in ASP.NET-Kern injizieren
Das Problem ist, dass in der ConfigureService-Methode in der Startup-Klasse ich den HttpContext nicht erhalten kann. Ich habe eine Middleware geschrieben, mit der ich den HTTP-Kontext bekommen kann, aber wie injiziere ich dort einen Dienst?
Verhindern Sie das Injizieren von Diensten auf der Grundlage von Laufzeitbedingungen, so wie Sie [Laufzeitdaten selbst nicht einfügen] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=99) in Ihre Anwendung einspeisen sollten Komponenten. Stattdessen muss eine zusammengesetzte Komponente in beide Implementierungen eingefügt werden und den Aufruf zur Laufzeit an die Implementierung weiterleiten. Fabriken sind kaum die richtige Lösung. – Steven