依赖注入到控制台应用程序
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
是您的合成根。这是我们应该引用容器的地方,所以在那里很合适。
我们使用 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
是您的合成根。这是我们应该引用容器的地方,所以在那里很合适。