首页 > 解决方案 > 控制台应用程序中的 .Net Core 依赖注入

问题描述

我正在尝试在 .NET Core 控制台应用程序中使用依赖注入。有很多关于它的文章,但没有找到解决我的问题的文章。我正在尝试使用来自 aspnet 核心 Web 应用程序的原始服务,这就是我拥有 WebHost 的原因。

我的主要问题是创建我自己的类的实例,所有依赖项似乎都有效,并且我的控制台应用程序启动了。

我的程序类中有这段代码:

static void Main(string[] args)
{            
    var host = WebHost.CreateDefaultBuilder(args)
        .UseKestrel(options => options.AddServerHeader = false)
        .UseStartup<Startup>()
        .Build();

    var services = new ServiceCollection().AddLogging();            
    var container = new Container();           
    var serviceProvider = container.GetInstance<IServiceProvider>();

由于此错误,此代码将无法编译:“Container”不包含“GetInstance”的定义

如何创建具有此实现的自定义类 App 的实例:

public class App
{
    private readonly IProductService _productService;

    public App(IProductService productService)
    {
        _productService = productService;
    }
}

标签: c#asp.net-core.net-coreconsole-application

解决方案


我不知道您的设置中的“容器”是什么,但您通常通过调用BuildServiceProvider.ServiceCollection

var provider = services.BuildServiceProvider();

var instance = provider.GetService<App>();

不过,您需要先在服务集合中注册两者App以及您想要的任何内容。IProductService


推荐阅读