Разрешение 2 объектов из одной и той же DLL (имя), но другой версии, используя .Net4.6.2? - PullRequest
0 голосов
/ 16 июня 2019

"У нас есть сценарий, в котором мы можем зарегистрироваться в конфигурационном файле 2 Singleton того же типа, но с другой версией dll. В фоновом режиме у нас есть 2dll-класса (только разные версии), которые все реализуют желаемый интерфейс. Мы хотели бы использовать Unity для разрешения 2 экземпляров для этого интерфейса. "

Для воспроизведения я использую следующий файл конфигурации

<configuration>
<unity>
    <aliases>
      <add alias="DtmParameter1" type="FullFrameworkLibLogic.DtmParameter,  FullFrameworkLibLogic, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <add alias="DtmParameter2" type="FullFrameworkLibLogic.DtmParameter, FullFrameworkLibLogic, Version=5.5.5.5, Culture=neutral, PublicKeyToken=null" />
</aliases>
    <container>

      <register name="1" type="IDtmParameter" mapTo="DtmParameter1">
<lifetime type="singleton" />
      </register>

      <register name="2" type="IDtmParameter" mapTo="DtmParameter2">
        <lifetime type="singleton" />
      </register>
    </container>
  </unity>
</configuration>

и я тестирую вот так:

public void Demo()
{
        IDtmParameter dtmParameter1 = this.container.Resolve<IDtmParameter>("1");
            var msg1 = dtmParameter1.GetVersion();
            Console.WriteLine(msg1);

            IDtmParameter dtmParameter2 = this.container.Resolve<IDtmParameter>("2");
            var msg2 = dtmParameter2.GetVersion();
            Console.WriteLine(msg2);
}

Ожидаемый результат: Version = 1.0.0.0 Version = 5.5.5.5

Фактический результат: Version = 1.0.0.0 Version = 1.0.0.0

Но без Unity Разрешение контейнера Я имею в виду, с отражением каждая работа отлично

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...