想象我有以下的类和接口:使用NInject绑定一个通用接口,使用默认的,如果为通用类型绑定未设置
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(可能使用公约扩展)设置绑定,这样我就不必每一个可能的实现IService的手动绑定?
看起来不错,但是您使用的是哪种版本的NInject?我仍在使用2.2,并且出现错误“有多个匹配的绑定可用。”希望他们已经在第3版中解决了这个问题。 – cbp 2012-07-27 01:53:48
我使用的是v3,所以它可能是一个附加功能 - 当我写答案时还没有意识到。 – Jan 2012-07-27 10:18:41
我还应该指出,这并不完全符合我的问题的要求,因为您仍然需要手动绑定每个服务类。 – cbp 2012-07-29 10:37:07