Как я могу расширить каталог Unity во время выполнения? - PullRequest
0 голосов
/ 31 марта 2011

Я хочу отобразить большинство моих интерфейсов на конкретные классы в моем файле app.config. Однако я хотел бы зарегистрировать некоторые интерфейсы в одном и том же каталоге Unity во время выполнения. Я попробовал код ниже, но он дает мне SynchronizationLockException: Object synchronization method was called from an unsynchronized block of code.

IUnityContainer container = new UnityContainer();

UnityConfigurationSection configSection =
    (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
configSection.Containers.Default.Configure(container);

container.RegisterInstance<IInterface>(new ConcreteObject());

Как я могу зарегистрировать объект во время выполнения в каталоге Unity, инициализированном из app.config?

Я использую версию Unity (2.0), которая поставляется с Prism4.

1 Ответ

0 голосов
/ 31 марта 2011

Это обычная проблема, но технически ошибка с регистрацией объектов единства. Измените свою регистрацию на это:

container.RegisterType<IInterface, ConcreteObject>(new ContainerControlledLifetimeManager());

Это должно решить твою проблему.

Это исключение вызывается из-за этого:

Можно ли заставить Unity постоянно генерировать исключение SynchronizationLockException?

...