[英]Aspnet core 5.0 inject dependency in startup.cs constructor
我正在尝试使用以下方法向 Asp.net 核心中的 Startup class 的构造函数添加一个参数: https://mattmazzola.medium.com/asp.net-core-injecting-custom-data-classes-into-startup-类构造函数和配置方法 7cc146f00afb
但是,这对我不起作用。 这是我的 C# 代码:
public class AppAProgram
{
#region Members
private IHostBuilder hostBuilder;
private IHost host;
#endregion
#region Constructors
public AppAProgram(string[] args)
{
this.hostBuilder = Host.CreateDefaultBuilder(args);
ILauncherContext launcherContext = new DummyLauncherContext();
this.hostBuilder.ConfigureServices((hostContext, services) => { services.AddSingleton<ILauncherContext>(launcherContext); });
this.hostBuilder.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<AppAStartup>(); });
this.host = hostBuilder.Build();
}
#endregion
public static void Main(string[] args)
{
AppAProgram appAProgram = new AppAProgram(args);
appAProgram.Start();
}
public void Start()
{
this.host.Run();
}
}
这是我为其添加注入参数的构造函数:
#region Constructors
public AppAStartup(IConfiguration configuration, ILauncherContext launcherContext)
{
Configuration = configuration;
this.launcherContext = launcherContext;
}
#endregion
当我这样做时,我得到这个异常:
System.InvalidOperationException:“在尝试激活‘Spike.Run.AppA.AppAStartup’时无法解析‘Spike.Run.Launcher.ILauncherContext’类型的服务。”
使用通用主机(IHostBuilder)时,只能将以下服务类型注入到启动构造函数中:
- IWebHostEnvironment
- 主机环境
- I配置
...
大多数服务在调用
Configure
方法之前不可用。
强调我的
请改用Configure
方法
public AppAStartup(IConfiguration configuration) {
Configuration = configuration;
}
public void Configure(IApplicationBuilder app, ..., ILauncherContext launcherContext) {
//access launcherContext here
//...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.