Ich habe eine 2 Controller PayerController und BusinessController. Beide Controller-Konstruktoren verwenden EntityManager als Parameter, der eine abstrakte Klasse ist. Ich möchte jede Manager-Klasse abhängig von dem Controller, den ich verwende, auflösen.Bedingte Abhängigkeitsauflösung in Asp.net Kern
Für PayerController möchte ich PayerManager-Klasse injizieren und für BusinessController möchte ich BusinessManager injizieren.
Derzeit erhalte ich das letzte Objekt, das mit EntityManager aufgelöst wurde, d. H. BusinessManager.
Ich erinnere mich, in Ninject können wir bedingte Injektion ziemlich leicht tun.
Dies ist, wie aktuell ich die Abhängigkeit lösen Aber nicht arbeiten.
Startup.cs
services.AddScoped(typeof(EntityManager), typeof(PayerManager));
services.AddScoped(typeof(EntityManager), typeof(BusinessManager));
Controller
public class PayerController
{
private PayerManager Manager{get;}
public PayerController(EntityManager entityManager)
{
Manager = entityManager as PayerManager;
}
}
Manager-Klassen
public class PayerManager : EntityManager
{
public void MyPayer()
{
}
}
public class BusinessManager : EntityManager
{
public void MyBusiness()
{
}
}
public abstract class EntityManager
{
public string IAMCommon()
{
return "";
}
}
werden Sie Fehler bekommen? Was genau passiert? –
Derzeit erhalte ich das letzte Objekt, das mit EntityManager gelöst wurde, d. H. BusinessManager. – maxspan
Wie erwartet der Contianer, welche konkrete Klasse Sie hier haben möchten? – DavidG