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>
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