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

时间:2015-12-15 14:01:37

标签: c# .net unity-container

我在我的项目中使用Unity容器,我试图像这样自己注册容器:

UnityContainer.RegisterInstance(UnityContainer);

但我得到以下例外:

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

我尝试搜索异常但我发现的所有内容都与互斥锁有关。

1 个答案:

答案 0 :(得分:1)

容器已经注册了自己(如IUnityContainer),因此您无需注册它。考虑以下课程:

public class MyClass
{
    private readonly IUnityContainer m_UnityContainer;

    public MyClass(IUnityContainer unity_container)
    {
        m_UnityContainer = unity_container;
    }
}

现在,如果您只是按如下方式解析此类,则会将容器注入其中。

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

请注意,让您的课程依赖于容器意味着您希望使用容器来查找服务以及此is considered an anti-pattern