.Net Core Dependency Injection injizieren von Konstruktor

Ich brauche, um zu injizieren, aus Konstruktor, der alles erklärte ich in der Setup.

Ho kann ich es tun ? Wie kann ich Spritzen Dienstleistungen aus dem Konstruktor ?
So etwas wie Injektor-service in Winkel 2.

INJIZIEREN SERVICES OHNE KONSTRUKTOR CONTROLLER

sowas

    public class ControllerBase : Controller
    {
        protected IRepository<Test> _test;
        protected IRepository<Test1> _test1;
        protected IRepository<Test2> _test2;

        public ControllerBase(INJECTOR injector)
        {
            _test = injector.inject(IRepository<Test>);
            _test1 = injector.inject(IRepository<Test1>);
            _test2 = injector.inject(IRepository<Test2>);
        }
    }

    public class SomeController : ControllerBase
    {
        public SomeController(INJECTOR injector)
            : base(injector)
        {

        }
    }

DANK FÜR die ANTWORT @Rick van den Bosch

FÜR DIEJENIGEN, DIE IMMER NOCH NICHT BEKOMMEN, WAS ICH WOLLTE:

public class ControllerBase : Controller
{
    protected IRepository<Test> _test;
    protected IRepository<Test1> _test1;
    protected IRepository<Test2> _test2;

    public ControllerBase(IServiceProvider injector)
    {
        _test = injector.GetService<IRepository<Test>>();
        _test1 = injector.GetService<IRepository<Test1>>();
        _test2 = injector.GetService<IRepository<Test2>>();
    }
}

public class SomeController : ControllerBase
{
    public SomeController(IServiceProvider injector)
        : base(injector)
    {
        //HERE I HAVE ALL 3 REPO NOW WITHOUT EXTRA LINES
    }
}
public class SomeController1 : ControllerBase
{
    public SomeController1(IServiceProvider injector)
        : base(injector)
    {
        //HERE I HAVE ALL 3 REPO NOW WITHOUT EXTRA LINES
    }
}
  • Also, was ist die Frage hier?
  • Ho kann ich es tun ? Wie kann ich Spritzen Dienstleistungen aus dem Konstruktor ?
  • Haben Blick auf dieses docs.microsoft.com/en-us/aspnet/core/fundamentals/...
  • Ich weiß, wie DI funktioniert und wie Sie Diensten registrieren, aber es injiziert werden kann nur in Konstruktoren ... ich brauche Injektion aus ihm heraus.
  • Ich denke middleware ist fit in Ihrer Anforderung. docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware.
  • Nein, nicht middleware-es geht um die Injektion, die ich brauche, um zu injizieren, Dienstleistungen OHNE KONSTRUKTOR CONTROLLER
  • Was meinst du mit "injection-out"? Mindestens ein code-Beispiel wäre hilfreich, um zu verstehen, was Ihr versuchen zu erreichen.
  • Eigentlich kann man Spritzen über die controller-action-Methoden-Parameter. Fügen Sie einfach [FromServices] vor.
  • thx juunas eigentlich brauche ich so etwas aber als variable, die ich Schreibe, base controller, und ich möchte zu injizieren Standard-services, ohne Sie zu deklarieren Sie im Konstruktor
  • Ist es das, was du suchst? Hier ist der Weg, um die service-provider aus einem controller ohne dependency injection. "zurück.HttpContext.RequestServices.GetService<IObject>();" Leider weiß ich nicht ob es funktioniert von einem Konstruktor
  • ja, ich bekam eine Antwort, aber Ihre Antwort ist die gleiche, trotzdem thx. IServiceProvider ist alles, was ich gesucht habe ))
  • Ihr Beispiel anscheinend einen service locator. Sie wollen wahrscheinlich verwenden ctor-injection. Hier ist ein link, wo man Lesen kann, ein wenig über dependency injection und inversion of control, in asp.net Kern docs.microsoft.com/en-us/aspnet/core/mvc/controllers/...
  • Aktuelle das Muster, das Sie zeigen, ist nicht begünstigt Komposition über Vererbung. Der code ist: "Meine Controller sind repositories für test" wenn in der Tat Sie sollten nur den direkten traffic auf die wahre repositories für den test. Modelle erstellen und nutzen starker Typ-Bindung statt. Rufen Sie die Methode im Modell/viewmodel das tut, was Sie wollen aus dem controller. Nicht implementieren der DATENZUGRIFFSSCHICHT in der Steuerung.
  • überprüfen aktualisiert, Frage ich fügte Antwort, die ich bekam

Schreibe einen Kommentar