Castle Windsor:在多个构造函数之间,为什么Castle会选择不正确的参数类型?

时间:2017-10-16 14:08:06

标签: c# castle-windsor multiple-constructors

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

但是,如果构造函数与config中指定的参数名称和类型不匹配,为什么会选择构造函数。

例如,假设以下配置:

<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中指定的参数名称(和类型)不匹配的构造函数?

0 个答案:

没有答案