我是使用 Unity 和 IoC/DI 概念的新手。我通过dnrTV上的James Kovacs 的节目在测试中推出了我自己的概念,从而开始了这个概念。
他的示例将容器作为单例运行,通过 IoC 类中的静态方法访问,因此您可以在启动时注册类型并在整个应用程序中解析类型。
我知道这不是全功能,主要是展示 IoC 的概念。
我现在正在尝试在项目中使用 Unity。
在我的 Main() 中,我创建了一个新容器,但是一旦我的 WinForms 打开,该容器就会超出范围并被处置。稍后在程序中,当我尝试解析类型时,我不再拥有原始容器及其注册类型。
是否有我缺少的概念或实现结构?
我目前的想法是创建这样的东西:
public static class Container
{
private static readonly object syncRoot = new object();
private static volatile IUnityContainer instance;
public static IUnityContainer Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
{
instance = new UnityContainer();
}
}
}
return instance;
}
}
}
我很确定这会奏效,只是看起来不对。