我想为IoC容器返回的应用程序的一部分定义一个外观,在我的情况下是StructureMap。 Facade有一个构造函数,它没有设置默认实现的参数,而另一个是我可以定义Facade管理的不同子系统对象的自定义实现。StructureMap和外墙
但是,由于StructureMap试图使用最多参数调用构造函数的外观实例,因此如果未注册其他子系统的实现,它将失败。
我的问题是:有没有什么办法告诉StructureMap尝试使用下面的构造函数,如果它不能使用主要的?或者我必须告诉StructureMap选择哪个构造函数?
也许有点示例代码将一些可视化的帮助。 – IAbstract 2011-06-09 13:16:07
如果可能,始终只有一个带参数的构造函数。不要创建一个初始化类型的默认构造函数。这样,你的类型仍然与具体的依赖关系紧密结合,这使得它很难交换。让StructureMap完成它的工作。 – Steven 2011-06-09 13:42:30
使用带参数的单个构造函数虽然仍然很少,但在这种情况下,大多数情况下会超出使用外观的目的。关于添加一些示例,我不知道是否真的需要,毕竟,我的问题不需要太多的代码。如果有一个具有多个构造函数的类,那么StructureMap将选择第一个具有更大数字的参数,如果参数,我想知道的是如果StructureMap在异常情况下可以以某种方式使用其他构造函数作为回退。 – Neverbirth 2011-06-09 14:18:49