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)。

4

1 回答 1

0

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

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

那应该可以解决您的问题。

由于以下原因,该异常被抛出:

可以让 Unity 始终不抛出 SynchronizationLockException 吗?

于 2011-03-31T16:44:33.653 回答