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

C# 如何在运行时扩展Unity目录?,c#,unity-container,app-config,ioc-container,unity2.0,C#,Unity Container,App Config,Ioc Container,Unity2.0,我想将我的大多数接口映射到app.config文件中的具体类。但是,我想在运行时将一些接口注册到同一个Unity目录。我尝试了下面的代码,但它给了我一个SynchronizationLockException:对象同步方法是从一个未同步的代码块调用的。 IUnityContainer container=newunitycontainer(); UnityConfiguration节配置节= (UnityConfiguration节)ConfigurationManager.GetSection

我想将我的大多数接口映射到app.config文件中的具体类。但是,我想在运行时将一些接口注册到同一个Unity目录。我尝试了下面的代码,但它给了我一个
SynchronizationLockException:对象同步方法是从一个未同步的代码块调用的。

IUnityContainer container=newunitycontainer();
UnityConfiguration节配置节=
(UnityConfiguration节)ConfigurationManager.GetSection(“unity”);
configSection.Containers.Default.Configure(容器);
RegisterInstance(新的ConcreteObject());
如何在运行时在从app.config初始化的Unity目录中注册对象


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

这是注册Unity对象的常见问题,但从技术上讲不是错误。将您的注册更改为:

container.RegisterType<IInterface, ConcreteObject>(new ContainerControlledLifetimeManager());
container.RegisterType(新ContainerControlledLifetimeManager());
这会解决你的问题

引发该异常的原因如下:


谢谢你的指针,但是我如何传入对象实例呢?当你要求时,它应该会为你创建实例。是的,但我不希望它新建一个新实例。我希望它返回我在运行时向容器注册的实例。
container.RegisterType<IInterface, ConcreteObject>(new ContainerControlledLifetimeManager());