【发布时间】:2014-02-21 10:32:04
【问题描述】:
我想将 IDicitionary 绑定到 Dictionary。我尝试了以下绑定:
Bind(typeof (IDictionary<,>)).To(typeof (Dictionary<,>));
Ninject 看到复制构造函数,并尝试使用它——这导致了循环依赖。
如何正确指定此绑定?
【问题讨论】:
-
你想在这里实现什么?你给消费者注入一个空字典有什么用?请注意
Dictionary<K, V>不是服务,它只是一个数据对象。构建 DI 容器是为了组合由服务(包含行为)组成的对象图;不是数据对象。 -
它有助于单元测试。在生产中,我希望它从一个空容器开始(可以分配新的,当然,但这没关系)。然而,对于测试,传递一个预先填充的测试可能是有意义的,这样我就可以测试特定的东西而无需设置。
-
但是在测试过程中你想用什么数据填充它?
-
适用于测试的任何内容。我也可能会传入一个模拟的字典。
-
在我看来,你试图做的是一种气味。该字典非常通用,并使您的应用程序完全动态化(就像您正在执行后期绑定一样)。如果您具体说明您希望何时以及如何使用这本词典,我们可以为您提供更好的选择。
标签: .net dependency-injection ninject