Tom*_*m W 5 dependency-injection ninject inversion-of-control
我在家里玩 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");
Run Code Online (Sandbox Code Playgroud)
...等等。
我不知道如何做这样的事情;所有的条件绑定似乎都依赖于注入目标的状态。这样做有什么意义?当消费类必须准确详细地指定确定给定的具体类型所需的所有条件时,它难道不会打败依赖注入的全部要点吗?为什么我不能告诉 Ninject 我想要什么,然后得到它?
该ctx参数只是上下文绑定的一个输入- 没有什么说明您需要对它给予丝毫的关注(除非您需要与委托签名兼容)。
但请记住RRR 模式,不要发疯。
IOW 你需要(用 V2 语法来做):
Bind<IWarrior>().To<Samurai>().When(_ => expression not involving context at all);
Run Code Online (Sandbox Code Playgroud)
(_穷人的洋泾浜在哪里使用 F# 模式匹配语法来忽略输入)
| 归档时间: |
|
| 查看次数: |
5461 次 |
| 最近记录: |