依赖注入到控制台应用程序

dependency injection into a console app

我们使用 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 方法。

这可能吗?

谢谢!

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

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

有人可能反对您不应该直接从容器中解析任何内容。没错,但是 Main 是您的合成根。这是我们应该引用容器的地方,所以在那里很合适。