我使用Ninject有一段时间了,现在想知道如何实现与Unity app.config / web.config条目相同的功能。我确定这很简单,只是还没有找到最佳实现方法,当然Ninject文档也不是很好。我的意思是,在不更改代码的情况下,为接口提供不同的实现 - 具体应用程序知道使用哪个实现。例如,当我使用Unity时,我会有一个使用不同数据库的实时应用和单元测试库。
在我的实际应用程序中,我将返回一个
在Ninject中,由于您在代码中定义了映射,似乎没有一种方法可以决定使用哪些实现(或哪个模块),除非在代码中进行设置-但是当然,整个目的是我不想具体说明要使用哪种实现。
有没有好的方法来解决这个问题?我能想到的唯一方法是从配置文件动态选择NinjectModule实现,但那感觉并不好。
var repo = IoC.Get<IRepository>();
在我的实际应用程序中,我将返回一个
RealRepository
,而在我的单元测试中则会返回一个FakeRepository
。我只需在app.config或web.config中映射这些类。在Ninject中,由于您在代码中定义了映射,似乎没有一种方法可以决定使用哪些实现(或哪个模块),除非在代码中进行设置-但是当然,整个目的是我不想具体说明要使用哪种实现。
有没有好的方法来解决这个问题?我能想到的唯一方法是从配置文件动态选择NinjectModule实现,但那感觉并不好。
IoC.Get<IRepository>()
暗示的误用。 - Kirk Woll