0

在一个类有多个构造函数的场景中,我知道 Castle Windsor 有一种算法用于检测“最贪婪”的构造函数并选择那个来解析组件。

但是,如果构造函数与 config.xml 中指定的参数名称和类型不匹配,为什么要选择它开始呢?

例如,假设以下配置:

<configuration>
<component id="MyComponent"  type="MyType"  service="IMyInterface">
  <parameters>
    <firstParam>${firstComponent}</firstParam>
    <secondParam>${secondComponent}</secondParam>
    <thirdParam>${thirdComponent}</thirdParam>
  </parameters>
</component>

<component id="MyOtherComponent"  type="MyType"  service="IMyInterface">
  <parameters>
    <firstParam>${firstComponent}</firstParam>
    <secondParam>${secondComponent}</secondParam>
    <forthParam>${forthComponent}</forthParam>
  </parameters>
</component>

和 MyType 类:

public class MyType : IMyInterface {

public MyType(IFirstComponent firstParam, ISecondComponent secondParam, IThirdComponent thirdParam){
    // do stuff
}

public MyType(IFirstComponent firstParam, ISecondComponent secondParam, IForthComponent forthParam){
    // do other stuff
}

}

我期望容器做的是调用 MyComponent 的第一个构造函数和 MyOtherComponent 的第二个构造函数。相反,两个组件都调用了第二个构造函数。

为什么 Castle 调用的构造函数显然与我在 config 中指定的参数名称(和类型)不匹配?

4

0 回答 0