簡體   English   中英

在與Ninject綁定時使用通用類型 - 是否可能?

[英]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綁定的更多信息

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM