Unity容器-对象同步方法是从一个未同步的代码块中调用的
本文关键字:同步 一个 代码 调用 对象 容器 同步方法 Unity | 更新日期: 2023-09-27 18:26:55
im在我的项目中使用统一容器,并试图将容器注册到它自己,如下所示:
UnityContainer.RegisterInstance(UnityContainer);
但我得到了以下例外:
Object synchronization method was called from an unsynchronized block of code.
我试着搜索异常,但我发现的都是与互斥锁有关的。
容器已经注册了自己(作为IUnityContainer
),所以您不必注册它
public class MyClass
{
private readonly IUnityContainer m_UnityContainer;
public MyClass(IUnityContainer unity_container)
{
m_UnityContainer = unity_container;
}
}
现在,如果您简单地按如下方式解析这个类,它将把容器注入其中
var obj = container.Resolve<MyClass>();
请注意,让类依赖于容器意味着您希望使用容器来定位服务,这被认为是一种反模式。