quiero unir múltiples implementaciones de un servicio y tienen todos ellos llamados a la vez:Ninject multidifusión
var kernel = new StandardKernel();
kernel.Bind<IBreakfast>.To<Spam>();
kernel.Bind<IBreakfast>.To<Eggs>();
kernel.Bind<IBreakfast>.To<MoreSpam>();
kernel.Get<IBreakfast>().Eat(); // call Eat method on all three bound implementations
Ninject no lo hace así, y arrojará una excepción por tener varios enlaces. ¿Hay alguna manera de evitar ese error y llamar a todas las implementaciones?
Además, las llamadas Bind<>
pueden realizarse en diferentes proyectos que pueden o no estar cargados en tiempo de ejecución, por lo que no será posible crear una única implementación para llamarlos. Esto es parte de una arquitectura de plug-in para un sitio web ASP.NET MVC 3.
voy a tratar esto en la mañana cuando llegue a trabajar, pero no se Ninject generará un error en la segunda llamada a bind <> () .To <>() '? – MikeWyatt
@MikeWyatt: No, múltiples 'Bind's están bien. Lo que no está bien es ir a 'Obtener' que rinde más que un elemento 'Individual'. Si desea hacer eso, puede usar 'GetAll ' (o use la agrupación implícita de múltiples registros a través de 'List ', 'T []' o 'IEnumerable ' como se sugiere) (Y las personas que publican/codifican ¡ya que las pruebas nunca publican cosas que explotan!). Tenga en cuenta que Ninject no tiene ningún muchanismt para generar un Composite implícito para multidifundir las llamadas de la manera que desee. –
Esto funciona genial. Gracias. – MikeWyatt