当存在多个构造函数时,Castle Windsor如何确定要解析的构造函数?
答案 0 :(得分:24)
所有可用的构造函数都被建模为候选者,并且基本上在它们之间运行竞赛。
构造函数中的每个参数表示可以满足或不满足的依赖关系。对于每个构造函数候选者,分析所有依赖项。
如果可以满足依赖性,那么候选人就是两点。如果不能满足,则从候选者中减去两个点。
获得最多积分的构造函数候选者将被选中以实例化该组件。
此算法的代码为here。
答案 1 :(得分:1)
Castle Windsor将使用构造函数,该参数具有可以解析其依赖关系的最多参数。
如果有两个构造函数具有与Windsor可以解析的参数数量相同的构造函数,则该行为过去似乎是任意的,但可能已经修复。
Krzysztof Kozmic见post