【发布时间】:2009-02-17 16:36:17
【问题描述】:
我不熟悉使用 Unity 和 IoC/DI 概念。我通过 James Kovacs 在dnrTV 上的节目在测试中推出了我自己的概念来开始这个概念。
他的示例将容器作为单例运行,通过 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;
}
}
}
我很确定这会起作用,只是看起来不太对。
【问题讨论】:
标签: inversion-of-control singleton unity-container