C# 如何在运行时扩展Unity目录?
我想将我的大多数接口映射到app.config文件中的具体类。但是,我想在运行时将一些接口注册到同一个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
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());