我在我的项目中使用Unity容器,我试图像这样自己注册容器:
UnityContainer.RegisterInstance(UnityContainer);
但我得到以下例外:
Object synchronization method was called from an unsynchronized block of code.
我尝试搜索异常但我发现的所有内容都与互斥锁有关。
答案 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。