[英]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.