WPF Prism: динамически загружать тип из сборки и регистрировать его в контейнере Unity - PullRequest
0 голосов
/ 23 января 2011

Вот что я пытаюсь сделать в загрузчике:

    protected override void ConfigureContainer()
    {
            Assembly someAssembly = Assembly.LoadFile(@".\SomeServiceImplementationLib.dll");

            Type someServiceImplementationType = someAssembly .GetType(@"SomeServiceImplementation");

            Container.RegisterType<ISomeServiceType, someServiceImplementationType >(new ContainerControlledLifetimeManager());


        base.ConfigureContainer();
    }

Это не компилирует сообщение "Ожидается тип или имя пространства имен" для someServiceImplementationType.Но это действительно тип, не так ли?

По сути, я хочу загрузить определенную сборку, только если при запуске выполняются определенные условия, и если она загружена, я хотел бы зарегистрировать реализацию службы из загруженной сборки с контейнером Unity.Есть ли способ сделать это вообще?

1 Ответ

1 голос
/ 23 января 2011

Вы путаете дженерики типа компиляции и типизацию во время выполнения.

Обобщения являются вещью времени компиляции, если только вы не сделаете немного магии отражения, чтобы создать новый универсальный экземпляр с типом.... но это не обязательно.

В контейнере Unity есть другие расширения для RegisterType, которые просты в использовании.

Вместо этого просто вызовите неуниверсальную форму:

Container.RegisterType(typeof(ISomeServiceType), someServiceImplementationType, new ContainerControlledLifetimeManager())
...