【问题标题】:IOC for a Console Application?控制台应用程序的 IOC?
【发布时间】:2008-11-13 19:07:09
【问题描述】:

谁能想到将 IOC 放入控制台应用程序的好解决方案?

目前我们只是使用具有以下方法的静态类:

public static T Resolve<T>()
{
    return dependencyResolver.Resolve<T>();
}

我希望体验是无缝的,但想不出通过控制台应用程序实现这一点的方法。

【问题讨论】:

    标签: c# dependency-injection inversion-of-control console-application


    【解决方案1】:

    您必须在某处拨打服务定位器电话 (Resolve&lt;T&gt;())。诀窍是让它尽可能远离。对于控制台应用程序,此引导发生在 Main() 方法中。在那里做,并尽量减少其他地方的那些 Resolve 调用,你会很棒的。对于大多数依赖项,使用构造函数注入。

    【讨论】:

    • 您是直接从 IoC 容器调用 Resolve() 方法,还是使用包装器从控制台应用程序中隐藏 IoC 容器?
    • 直接从容器中调用它。除非你有理由隐藏它。
    • @MattHinze 即使在控制台应用程序中,这仍然被认为是反模式吗?
    【解决方案2】:

    控制台应用程序对 IoC 的 Web 或表单应用程序没有任何限制。您可以使用任何您的选择(Spring、Ninject、Unity 等)。它们中的大多数都可以在您的控制台应用程序外部使用 XML 文件进行配置,而像 Ninjector 这样的一些需要在您的应用程序内部进行配置。

    【讨论】:

      【解决方案3】:

      我从控制台应用程序中使用了 Spring.NET,没有任何问题。您只需将它指向您的配置文件,它就会连接所有依赖项。当然,您随后对这些对象做什么取决于您的控制台应用程序试图做什么。

      【讨论】:

        【解决方案4】:

        结帐微软Unity

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-04
          • 1970-01-01
          • 2011-01-22
          • 2022-01-18
          • 1970-01-01
          • 2010-10-30
          • 1970-01-01
          • 2019-01-24
          相关资源
          最近更新 更多