Unity:在xml配置文件中将参数传递给自定义生命周期构造函数

时间:2010-07-05 09:25:27

标签: c# configuration inversion-of-control unity-container lifetime

我写了这样的CustomLifetimeManager:

public class CustomLifetimeManager <T> : LifetimeManager
{
    private readonly string _arg;

    public CustomLifetimeManager(string arg)
    {
      _arg = arg;
    }
}

现在,它可以通过编程方式轻松配置容器,但是如何将其添加到配置文件中,如下所示?

<type type="myTime"
      mapTo="myImpl">
      <lifetime type="CustomLifetimeManager"/>
</type>

1 个答案:

答案 0 :(得分:0)

您需要添加第二个类:TypeConverter。该类负责获取字符串并将其转换为您想要的任何类型。实现后,您可以在配置文件中执行以下操作:

<register type="MyType" mapTo"MyImpl">
  <lifetime typeConverter="CustomLifetimeManagerConverter" value="arg" />
</register>

从那里它应该工作(假设配置可以像任何其他类型一样找到类型转换器)。