如何在运行时扩展Unity目录?

时间:2011-03-31 16:32:43

标签: c# unity-container app-config ioc-container unity2.0

我想将大多数接口映射到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());

如何在运行时在从app.config初始化的Unity目录中注册对象?

我正在使用Prism4附带的Unity版本(2.0)。

1 个答案:

答案 0 :(得分:0)

这是一个常见问题,但在技术上并不是错误,而是注册了统一对象。将您的注意力更改为:

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

那应该解决你的问题。

由于这个原因引发了异常:

Can Unity be made to not throw SynchronizationLockException all the time?