Unity: передать параметры в пользовательский конструктор времени жизни в файле конфигурации xml - PullRequest
2 голосов
/ 05 июля 2010

Я написал свой 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 голосов
/ 29 августа 2010

Вам нужно добавить второй класс: TypeConverter. Этот класс отвечает за взятие строки и превращение ее в любой тип, который вы хотите. После того, как вы это осуществите, вы можете сделать что-то вроде этого в вашем конфигурационном файле:

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

и оттуда он должен просто работать (при условии, что конфиг может найти преобразователь типов, как и любой другой тип).

...