依赖注入控制台应用程序

时间:2016-08-08 20:24:39

标签: c# .net dependency-injection console-application autofac

我们使用Autofac在我们的Web应用程序中执行一些简单的依赖注入。它都是在幕后操作的类中配置和注册的。它使得我们项目中的注入东西很容易,就像这样:

//interface
public interface ISuperHereService
{ }

//class that uses the interface
public class SuperHeroFactory
{
    public ISuperHeroService SuperHeroService { get; }

    public SuperHeroFactory(ISuperHeroService superHeroService)
    {
       SuperHeroService = superHeroService;

       ...do all our stuff...

但是现在我必须创建一个单独的项目作为控制台应用程序。我的控制台应用程序有一个Main方法。

我完全不确定如何在Main方法中注入接口。

这可能吗?

谢谢!

2 个答案:

答案 0 :(得分:6)

Main(或从Main调用的方法中)创建和配置容器。) 然后从容器中解析SuperHeroFactory的实例并调用您需要的任何方法。

有人可能会反对您不应直接从容器中解析任何内容。这是真的,但Main是你的作文根。这是我们应该引用容器的地方,所以它适合那里。

答案 1 :(得分:2)

不,不要在Main()方法中这样做;而是定义一个单独的类,它应该采用ISuperHeroService实例并做必要的工作。然后在Main()方法中创建该类的实例,在实例化时,您可以执行与您现在正在执行的相同的DI。