[英]Using Generic Types while binding with Ninject - is it possible?
使用Ninject,在我的主程序中我打電話:
var kernel = new StandardKernel(new MyBindings());
var stuff = kernel.Get<MediaPresenter>();
不幸的是我得到一個例外:
沒有匹配的綁定可用,並且該類型不可自綁定。
我真的不明白這意味着什么。 這是我的綁定類:
class MyBindings : NinjectModule
{
public override void Load()
{
Bind<MediaPresenter>().ToSelf();
Bind(typeof (Dao<Book>)).To(typeof (Dao<Book>));
}
}
如果我刪除該行:
Bind(typeof(Dao<Book>)).To(typeof(Dao<Book>));
應用程序運行,但后來我沒有綁定。
為什么這種事情不起作用,我該如何解決?
現在無法測試,但這應該工作:
Bind(typeof (Dao<>)).To(typeof(Dao<>));
使用界面,可能更好的想法:
Bind(typeof (IDao<>)).To(typeof(Dao<>));
為什么不在加載中執行此操作:
Bind<Dao<Book>>.ToSelf();
您應該對接口進行編碼,因為它會使您的代碼更易於測試。 看看有關Ninject綁定的更多信息
好吧,在你的情況下你需要這樣做(沒有測試)。 只要您告訴注入具體的實施,它將根據您在代碼中具有正確的注入屬性來處理在適當位置的注入。
class MyBindings : NinjectModule
{
public override void Load()
{
Bind<IMediaPresenter>().To<MediaPresenter>;
Bind<IDao>().To<Dao>();
Bind<IBook>().To<Book>();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.