当存在默认参数值</constructor-arg>时,在spring框架中省略<constructor-arg>

时间:2011-06-01 10:21:32

标签: c# spring.net

我有以下简单的构造函数:

public SimpleClass(Type1 arg1, int interval = 1000)
{ ... }

我使用spring框架初始化如下,不使用autowire

<object name="SimpleClass" type="..., ...">     
    <constructor-arg name="arg1" ref="..." />
    <constructor-arg name="interval" value="1000" />    
</object>

我的问题是:由于我在实际构造函数中为第二个参数定义了一个默认值,我可以将它从spring配置文件中删除,或者如果不这样做,spring是否需要对所有参数进行显式声明使用autowire?在这里留下默认参数值是否有任何意义,因为我正在使用spring?

1 个答案:

答案 0 :(得分:1)

使用xml配置时无效(使用Spring.NET 1.3.1测试)。

使用CodeConfig时可能会有效,但我还没有尝试过。

最快的解决方法是在您的班级中简单地引入第二个构造函数:

Class SimpleClass
{
  public SimpleClass(Type1 arg1) : this(arg1, 1000)
  {}

  public SimpleClass(Type1 arg1, int interval = 1000)
  { 
    // ...
  }
}

这将始终有效。