Unity容器-对象同步方法是从一个未同步的代码块中调用的

本文关键字:同步 一个 代码 调用 对象 容器 同步方法 Unity | 更新日期: 2023-09-27 18:26:55

im在我的项目中使用统一容器,并试图将容器注册到它自己,如下所示:

UnityContainer.RegisterInstance(UnityContainer);

但我得到了以下例外:

Object synchronization method was called from an unsynchronized block of code.

我试着搜索异常,但我发现的都是与互斥锁有关的。

Unity容器-对象同步方法是从一个未同步的代码块中调用的

容器已经注册了自己(作为IUnityContainer),所以您不必注册它

public class MyClass
{
    private readonly IUnityContainer m_UnityContainer;
    public MyClass(IUnityContainer unity_container)
    {
        m_UnityContainer = unity_container;
    }
}

现在,如果您简单地按如下方式解析这个类,它将把容器注入其中

var obj = container.Resolve<MyClass>();

请注意,让类依赖于容器意味着您希望使用容器来定位服务,这被认为是一种反模式。