c# - 控制台应用程序中的 .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;
}
}
解决方案
我不知道您的设置中的“容器”是什么,但您通常通过调用BuildServiceProvider
.ServiceCollection
var provider = services.BuildServiceProvider();
var instance = provider.GetService<App>();
不过,您需要先在服务集合中注册两者App
以及您想要的任何内容。IProductService
推荐阅读
- python - 由于使用python selenium之间的错误,如何继续从循环中断的地方刮取数据
- azure - 自定义策略:即使语言直接传递给用户流,也要防止不受支持的语言环境
- python - DataFrame 将函数应用于一列中的值以创建另一列
- python - 安装第三方模块 - 自动化无聊的东西第 6 章 - 附录 A
- apache-flink - Flink 1.9 停止功能被移除
- azure-active-directory - Azure AD B2C:在本地注册期间保留声明的默认值
- mysql - 2 where条件一个SQL语句
- mysql - 如何在 MySQL 中使用 Case When 和 Str_to Date 将 Varchar 日期值转换为日期数据类型
- angular - 使用 Angular 构建多个应用程序版本
- angular - 如何动态地将对象传递给角度属性