Unity: pass parameters to custom lifetime constructor, in xml configuration file

南笙酒味 提交于 2019-12-10 11:17:58

问题


I wrote my CustomLifetimeManager like this:

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

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

Now, it works easy configuring the container programmatically, but how add it in configuration file like the following?

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

回答1:


You need to add a second class: A TypeConverter. This class is responsible for taking a string and turning it into whatever type you want. Once you implement it, you can then do something like this in your config file:

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

and from there it should just work (assuming the config can find the type converter like any other type).



来源:https://stackoverflow.com/questions/3178394/unity-pass-parameters-to-custom-lifetime-constructor-in-xml-configuration-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!