【发布时间】:2011-06-09 12:59:32
【问题描述】:
我正在考虑为由 IoC 容器返回的应用程序的一部分定义一个外观,在我的例子中是 StructureMap。外观有一个不带参数的构造函数,用于设置默认实现,还有一个构造函数,因此我可以定义外观管理的不同子系统对象的自定义实现。
但是,由于 StructureMap 试图创建一个外观实例,调用具有最多参数的构造函数,如果没有注册其他子系统的实现,它就会失败。
我的问题是:如果 StructureMap 不能使用主构造函数,有什么方法可以告诉它尝试使用以下构造函数?还是我必须告诉 StructureMap 选择哪个构造函数?
【问题讨论】:
-
也许一些示例代码将有助于一些可视化。
-
如果可能,总是有一个带参数的构造函数。不要创建初始化类型的默认构造函数。这样你的类型仍然与具体的依赖关系紧密耦合,这使得交换变得困难。让 StructureMap 完成它的工作。
-
只有一个带参数的构造函数,虽然仍然很少,但在这种情况下,大部分情况下都无法达到使用外观的目的。关于添加一些示例,我不知道是否真的需要,毕竟我的问题不需要太多代码。拥有一个具有多个构造函数的类,StructureMap 将选择第一个具有更多 if 参数的类,我想知道的是 StructureMap 是否可以以某种方式使用其他构造函数作为异常情况下的后备。
标签: .net ioc-container structuremap