Imagínese que tengo las siguientes clases e interfaces:Usando ninject a asociar una interfaz genérica, con un defecto si una unión de tipo genérico no está configurado
public interface IService<T> { }
public class DefaultService<T> : IService<T> { }
public class FooService : IService<Foo> { }
public class BarService : IService<Bar> { }
Después me gustaría ser capaz de obtener instancias desde el núcleo de esta manera:
Kernel.Get<IService<Foo>>(); // Should return FooService
Kernel.Get<IService<Bar>>(); // Should return BarService
Kernel.Get<IService<Dog>>(); // Should return DefaultService
Kernel.Get<IService<Cat>>(); // Should return DefaultService
Kernel.Get<IService<Giraffe>>(); // Should return DefaultService
¿es posible fijaciones de programación utilizando ninject (posiblemente mediante la extensión de los convenios), de modo que yo no tengo que unir manualmente cada posible implementación de IService?
Se ve bien, pero ¿qué versión de NInject estás usando? Todavía estoy usando 2.2 y me aparece el error "Hay más de un enlace compatible disponible". Esperemos que hayan solucionado esto en la versión 3. – cbp
Estoy usando v3 por lo que es probable que sea una característica adicional; no me he dado cuenta de eso cuando escribí la respuesta. – Jan
También debo señalar que esto no cumple con los requisitos de mi pregunta porque todavía tiene que vincular manualmente cada una de las clases de servicio. – cbp