1
Bind(typeof(IRepository<>)).To(typeof(Repository<>));
這是有效的NInject和我的問題是,這是否是一種濫用/反模式。
問題是你不能擁有一個類型爲IRepository <>的成員/參數變量,因此擁有這個綁定實例的唯一方法是通過一個帶有Type請求的工廠。即
_kernel.Get(typeof(IRepository<>));
探索的一個可能的途徑可能是使用動力學;
public Foo(IRepository<dynamic> repository)
{}
至少在這裏我們有一個注入的構造函數參數,它遵守控制反轉。
我在問以上是因爲another question我問過開放式的泛型;在這方面下面...
public Foo(IEnumerable<IRepository<dynamic>> allRepoInstancesInjected)
...似乎應該是可能的東西。