Die automatische Auflösung des .Net Core-Frameworks findet meine Registrierungen nicht in DryIoC.Registrierungen nicht auflösbar
Dies mit dem neuen .Net Core 2 Framework, DryIoC 2.10.7 und DryIoc.Microsoft.DependencyInjection 1.2.2. Ich kann nicht auf DryIoC 2.11.7 aktualisieren, da die DryIoc.Microsoft.DependencyInjection nicht die neueste Version abruft. Ich habe versucht, das letztere nach der Installation 2.11.7 neu zu installieren, aber das hat nicht funktioniert (mehrdeutige Referenzen).
Hier ist mein Startcode:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddControllersAsServices();
var container = new Container(rules => rules.With(propertiesAndFields: PropertiesAndFields.Auto))
.WithDependencyInjectionAdapter(services);
container.ConfigureServiceProvider<CompositionRoot>();
}
Und hier sind meine Registrierungscode:
public CompositionRoot(IRegistrator registrator, IContainer container)
{
//System Clock
registrator.Register<IClock, ConcreteClock>(Reuse.Singleton, null, null, IfAlreadyRegistered.Keep);
container.RegisterInstance<ISystemConfiguration>(new Configuration(container.Resolve<IClock>()), Reuse.Singleton, IfAlreadyRegistered.Keep);
//Logging
container.RegisterInstance<ILogging>(CreateLogger(container.Resolve<ISystemConfiguration>()), Reuse.Singleton, IfAlreadyRegistered.Keep);
}
Schließlich ist die Steuerung:
public class AdminController : Controller
{
private readonly ILogging _log;
private readonly IClock _clock;
public AdminController(ILogging log,
IClock clock)
{
_log = log;
_clock = clock;
}
}
Hier ist die Ausnahme:
System.InvalidOperationException: Der Dienst konnte für den Typ 'SharedAssets.Interfaces.ILogging' nicht aufgelöst werden, während versucht wurde, 'DataDictionaryService.Controllers.AdminController' zu aktivieren. bei Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites (Typ service, Typ implementationType ISET
1 callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(Type serviceType, Type implementationType, ISet
callSiteChain 1) bei Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact (ServiceDescriptor Deskriptors, Typ service ISET1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(Type serviceType, ISet
1 callSiteChain) bei Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateCallSite (Typ service~~POS=TRUNC, ISet Wörterbuch, TKey Schlüssel, Func`3 valueFactory, Targ arg) bei Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService (Typ serviceType) um Microsoft.Extensio ns.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService (IServiceProvider Anbieter, Typ Servicetype) bei Microsoft.AspNetCore.Mvc.Controllers.ServiceBasedControllerActivator.Create (Controller Action) bei Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider. <> c__DisplayClass5_0.g__CreateController0 (Controller Controller) bei Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next (State & nächsten, Scope & Umfang, Object & Zustand, Boolean & IsCompleted) bei Microsoft.AspNetCore.Mvc.Internal .ControllerActionInvoker.d__14.MoveNext() --- Ende der Stack-Trace aus früheren Stelle, wo Ausnahme ausgelöst wurde --- bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task Task) um Microsoft.AspNetCore.Mvc.Int ernal.ResourceInvoker.d__22.MoveNext() --- Ende des Stack-Trace vom vorherigen Speicherort, an dem die Ausnahme ausgelöst wurde --- um System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() um Microsoft.AspNetCore.Mvc.Internal. ResourceInvoker.Rethrow (ResourceExecutedContext Kontext) um Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Weiter (State & nächsten, Scope & Umfang, Object & Zustand, Boolean & IsCompleted) bei Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.d__17.MoveNext() --- Ende der Stack-Trace aus früheren Stelle, wo Ausnahme war geworfen --- bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) bei Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.d__15.MoveNext() --- Ende der Stapelüberwachung von der vorherigen Position, an der die Ausnahme ausgelöst wurde --- unter System.Runtime.ExceptionServices.ExceptionDispatchInfo .Throw() bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) bei Microsoft.AspNetCore.Builder.RouterMiddleware.d__4.MoveNext() --- Ende der Stack-Trace aus früheren Stelle, wo Ausnahme ausgelöst wurde --- bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) bei Microsoft.AspNetCore.Cors.Infrastructure.CorsMiddleware.d__7.MoveNext() --- Ende des Stack-Trace vom vorherigen Speicherort, an dem die Ausnahme ausgelöst wurde --- unter System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() um System.Runtime .CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe Aufgabe) bei Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext()
Dank!
einen Blick auf ein [Beispiel für DryIoC] Unter (https://bitbucket.org/dadhi/dryioc/src/8e609b011beafd71236f9cfe3bb2d3e0589e76ae/NetCore/src/DryIoc.AspNetCore.Sample/Startup. cs? at = Standard & Dateiviewer = Datei-Ansicht-Standard) Sie müssen den Container zurückgeben. – DavidG
Danke DavidG, ich weiß nicht, wie ich das verpasst habe, weil ich das gleiche Beispiel angeschaut habe. Ich denke, diese 12-Stunden-Tage fangen an, zu mir zu kommen ... – ChrisB