什么是构造函数解析顺序?

时间:2009-09-04 02:48:04

标签: c# .net dependency-injection castle-windsor ioc-container

当存在多个构造函数时,Castle Windsor如何确定要解析的构造函数?

2 个答案:

答案 0 :(得分:24)

所有可用的构造函数都被建模为候选者,并且基本上在它们之间运行竞赛。

构造函数中的每个参数表示可以满足或不满足的依赖关系。对于每个构造函数候选者,分析所有依赖项。

如果可以满足依赖性,那么候选人就是两点。如果不能满足,则从候选者中减去两个点。

获得最多积分的构造函数候选者将被选中以实例化该组件。

此算法的代码为here

答案 1 :(得分:1)

Castle Windsor将使用构造函数,该参数具有可以解析其依赖关系的最多参数。

如果有两个构造函数具有与Windsor可以解析的参数数量相同的构造函数,则该行为过去似乎是任意的,但可能已经修复。

Krzysztof Kozmic见post