Pregunta

Me parece que tienen un problema - en lugar inesperado; así que supongo que podría estar haciendo algo tonto / incorrecto.

Cómo registro dos servicios de contenedores de ámbito tales como:

builder.Register<IServiceInfo>(c => CreateServiceInfo(c)).As<IServiceInfo>();
builder.Register<IServiceInfo>(c => CreateServiceInfoSomeOther(c)).As<IServiceInfo>().Named("someOther");

Ahora cuando intento para resolver

container.Resolve<IServiceInfo>()
and container.Resolve<IServiceInfo>("someOther")

Me da la misma instancia. Yo esperaría que la primera llamada para devolver la primera instancia y la segunda llamada para devolver la segunda instancia. ¿Por qué esta sucediendo de esta manera?

Estoy esperando que hay algunos expertos autofac activos por aquí y te agradecería cualquier ayuda para arreglar rápidamente esto.

Gracias a todos!

¿Fue útil?

Solución

Cuando dos servicios están registrados, el último que gana (no importa que el segundo se llama, que sigue siendo un registro para ese servicio), a menos que pedir una instancia por su nombre.

Puede utilizar ".DefaultOnly ()" para modificar su segundo registro de modo que el primero es el defecto real. Vea la para obtener más información.

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