想象我有以下的類和接口:使用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