Als «inversion-of-control» getaggte Fragen

Inversion of Control (IoC) ist ein abstraktes Prinzip, das einen Aspekt einiger Softwarearchitekturentwürfe beschreibt, bei denen der Steuerungsfluss eines Systems im Vergleich zur prozeduralen Programmierung invertiert ist.

21
Muss die Abhängigkeitsinjektion auf Kosten der Kapselung gehen?
Wenn ich das richtig verstehe, besteht der typische Mechanismus für die Abhängigkeitsinjektion darin, entweder über einen Klassenkonstruktor oder über eine öffentliche Eigenschaft (Mitglied) der Klasse zu injizieren. Dies legt die injizierte Abhängigkeit offen und verstößt gegen das OOP-Prinzip der Kapselung. Bin ich richtig darin, diesen Kompromiss zu identifizieren? Wie gehen …


5
Auflösen der Instanz in ConfigureServices in ASP.NET Core
Ist es möglich, eine Instanz von IOptions<AppSettings>aus der ConfigureServicesMethode in Startup aufzulösen ? Normalerweise können Sie IServiceProviderInstanzen initialisieren, aber Sie haben sie zu diesem Zeitpunkt noch nicht, wenn Sie Dienste registrieren. public void ConfigureServices(IServiceCollection services) { services.Configure<AppSettings>( configuration.GetConfigurationSection(nameof(AppSettings))); // How can I resolve IOptions<AppSettings> here? }


2
Warum nicht einen IoC-Container verwenden, um Abhängigkeiten für Entitäten / Geschäftsobjekte aufzulösen?
Ich verstehe das Konzept hinter DI, aber ich lerne gerade, was verschiedene IoC-Container können. Es scheint, dass die meisten Leute die Verwendung von IoC-Containern befürworten, um zustandslose Dienste zu verkabeln, aber was ist mit der Verwendung für zustandsbehaftete Objekte wie Entitäten? Ob es richtig oder falsch ist, ich stopfe meine …




4
Wie füge ich mit Unity eine benannte Abhängigkeit in einen Konstruktor ein?
Ich habe die IRespositoryzweimal (mit Namen) im folgenden Code registriert: // Setup the Client Repository IOC.Container.RegisterType<ClientEntities>(new InjectionConstructor()); IOC.Container.RegisterType<IRepository, GenericRepository> ("Client", new InjectionConstructor(typeof(ClientEntities))); // Setup the Customer Repository IOC.Container.RegisterType<CustomerEntities>(new InjectionConstructor()); IOC.Container.RegisterType<IRepository, GenericRepository> ("Customer", new InjectionConstructor(typeof(CustomerEntities))); IOC.Container.RegisterType<IClientModel, ClientModel>(); IOC.Container.RegisterType<ICustomerModel, CustomerModel>(); Aber wenn ich dies beheben möchte (um das zu verwenden IRepository), muss …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.