【发布时间】:2011-12-05 20:36:44
【问题描述】:
我正在家里使用 Ninject 进行一个简单的测试台项目,只是想看看我能用它做什么。作为一个起点,我正在为一些服务构建一个控制台运行器,它接受各种参数,并根据它输入的内容,使用为流式接口提供的相同方法来配置要运行的模型。
例如,假设我有一个详细程度开关,/o。 /o 可以传递为/o:quiet、/o:normal 或/o:verbose。各种选项一目了然。
为了满足这个论点,我想附上ILogger 的各种实现 - quiet 获取一个仅打印关键消息的安静记录器,normal 获取一个普通记录器,verbose 获取一个打印所有内容的健谈记录器。
我想做的是模块中的一些东西,例如:
Bind<ILogger>().To<QuietLogger>().When(VerbosityParameter=="quiet");
Bind<ILogger>().To<VerboseLogger>().When(VerbosityParameter=="verbose");
...等等。
我看不出怎么做这样的事情;所有条件绑定似乎都依赖于注入目标的状态。那有什么意义呢?当消费类必须准确详细地指定确定它获得什么具体类型所需的所有条件时,它是否会破坏依赖注入的整个点?为什么我不能直接告诉 Ninject 我想要什么并得到它?
【问题讨论】:
-
我意识到这个问题很古老,但我想我最近遇到了一个类似的问题,最后让 Ninject (在某种程度上)通过使用
ToMethod进行绑定来按照我想要的方式行事,并且然后将 Ninject 参数传递给内核的Get。这使我可以根据需要访问带有参数值的上下文。 stackoverflow.com/questions/22766200/…
标签: dependency-injection inversion-of-control ninject