簡體   English   中英

As.net core 5.0 在 startup.cs 構造函數中注入依賴

[英]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’類型的服務。”

參考創業公司 class

使用通用主機(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM