¿Cómo puede autofac servicio de vuelta con parámetros del constructor?

StackOverflow https://stackoverflow.com/questions/2826579

  •  26-09-2019
  •  | 
  •  

Pregunta

Estoy probando el envase Autofac con estos a continuación:

var builder = new ContainerBuilder();

builder.Register(t => new TreatmentCenterRepository())
  .As<IRepository<TreatmentCenter>>();

builder.Register(t => new CreateTreatmentCenterCommandHandler(t.Resolve<IRepository<TreatmentCenter>>()))
  .As<ICommandHandler<CreateTreatmentCenterCommand>>();
var container = builder.Build();
var repo = container.Resolve<IRepository<TreatmentCenter>>();
var handler = container.Resolve<ICommandHandler<TreatmentCenter>>();

Console.WriteLine(repo);
Console.WriteLine(handler);

La implementación controlador de comandos tiene una ctor con el parámetro repositorio.

Al ejecutar este consigo esta excepción:

Unhandled Exception: Autofac.Core.Registration.ComponentNotRegisteredException: The requested service 'Console
Application2.ICommandHandler`1[[ConsoleApplication2.TreatmentCenter, ConsoleApplication2, Version=1.0.0.0, Cul
ture=neutral, PublicKeyToken=null]]' has not been registered.
   at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Service service, IEnumerable`1 parameter
s)
   at Autofac.ResolutionExtensions.Resolve[TService](IComponentContext context, IEnumerable`1 parameters)
   at Autofac.ResolutionExtensions.Resolve[TService](IComponentContext context)
   at ConsoleApplication2.Program.Main(String[] args) in D:\Projects\Test Projects\ConsoleApplication2\Console
Application2\Program.cs:line 30

¿Por qué es Barfing? Yo claramente registrado que el manipulador con el repositorio como parámetro ctor.

Gracias

¿Fue útil?

Solución

El mensaje de excepción indica el problema: usted está tratando de ICommandHandler<TreatmentCenter> determinación que no está registrado en el contenedor. Lo que Tienes en su envase es ICommandHandler<CreateTreatmentCenterCommand>. Es un error, tal vez?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top