如何将我的接口绑定到不同程序集中的具体类?
我的解决方案中有以下项目:
Foo.Data
Foo.域名
在 Structure Map 中,我将两个程序集名称添加到 StructureMap.config 文件中,然后使用 PluginFamily 和 Pluggable 属性将我的接口映射到我的具体类。
如何使用 Ninject 完成同样的事情?
我将在这里做一些假设。
- 您的 Foo.Domain 项目中有一个名为 IBar 的接口,并且您的 Foo.Data 项目中有一个名为 BarClass 的具体类。
- 事实上,您在 Foo.Data 项目中引用了 Foo.Domain 项目,因为 BarClass 实现了 IBar。
使用 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 的实例。
总而言之,我很可能无法完全理解您的应用程序的所有细微差别 - 例如程序集是动态加载的,等等。无论如何,希望这能有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)