Представьте, что у меня есть следующие классы и интерфейсы:
public interface IService<T> { }
public class DefaultService<T> : IService<T> { }
public class FooService : IService<Foo> { }
public class BarService : IService<Bar> { }
Тогда мне хотелось бы получить экземпляры из ядра следующим образом:
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
Можно ли установить привязки с помощью NInject (возможно, используя расширение Conventions), так что мне не нужно вручную связывать каждую возможную реализацию IService?