Castle Windsor:将参数值设置为空字符串

时间:2010-03-31 18:14:58

标签: castle-windsor

如何允许我的一个字符串参数为空字符串?

当我尝试 nothing 或单个空格(名称已更改)时,我收到此错误:

无法解析'test.User'(MyNamespace.MyObject)的非可选依赖项。参数'userName'类型'System.String'

3 个答案:

答案 0 :(得分:8)

事实证明,添加一个不带参数的构造函数更容易,而且可能更多正确

答案 1 :(得分:2)

container.Register(
   Component.For<Foo>()
      .DependsOn(new
      {
         someString = string.Empty
      }));

但首先,为什么要将该依赖项设置为空字符串?它确实感觉像是在攻击我。

答案 2 :(得分:1)

如果已经存在默认值(null)或其他非空字符串,该怎么办?一种解决方案是创建一个组件:

<component id="emptyString" type="System.String, mscorlib" />

然后在参数节点中使用它:

<parameters> <someStringParameter>${emptyString}</someStringParameter> </parameters>

但似乎应该有一种更简单的方式。