[英]Ninject Binding
如何將我的接口綁定到不同程序集中的具體類?
我的解決方案中包含以下項目:
Foo.Data
Foo.Domain
在結構圖中,我將兩個程序集名稱添加到StructureMap.config文件中,然后使用PluginFamily和Pluggable屬性將接口映射到具體類。
Ninject如何完成同一件事?
我將在此處進行一些假設。
使用Ninject進行的最簡單的操作是在Foo.Data中創建一個新類,該類繼承自Ninject的StandardModule:
internal class BarModule : StandardModule {
public override void Load() {
Bind<IBar>()
.To<BarClass>();
}
}
然后,此類建立IBar請求與BarClass具體類的綁定。 這是您的XML等效項。
下一步是創建Ninject內核(也稱為“容器”)並為其提供該模塊(即此配置)。 您在哪里進行操作很大程度上取決於您要創建哪種類型的應用程序。 一般來說,通常將在代碼的邏輯入口點或“啟動”部分配置內核。 如果它是控制台或Windows桌面應用程序,則可能是main()函數首先要做的事情之一。
代碼如下:
var modules = new IModule[] {
new BarModule()
};
var kernel = new StandardKernel(modules);
此時,當您執行以下操作時:
var barObj = kernel.Get<IBar>()
變量barObj引用BarClass的實例。
所有人都說,我完全不可能完全了解您的應用程序的所有細微差別-例如,程序集是動態加載的,等等。希望這對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.