0
DIコンテナを使用し、インスタンスをハードコードしないで私のアプリケーションのスタートアップコンフィギュレーションでルートのインスタンスを取得したいのですが、その方法はありますか?dotnetcoreでDIコンテナを取得する
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
"default",
"{controller=Home}/{action=Index}/{id?}");
// hardcoded dependeny, I'd like to do something like this
// var instance = container.getInstance<LandingPageRouter>();
routes.Routes.Add(new LandingPageRouter(routes, new MyWebRequest()));
});
}
ありがとうございましたが、この例外が発生しています: "タイプ 'Main.Config.LandingPageRouter'のサービスが登録されていません。 –
わかりません。 DIコンテナにない場合は、サービスとして登録されていないことを意味します。スタートアップクラスの 'ConfigureServices'メソッドの中で' services.AddScoped(); 'を試すことができます。 –
実際、登録時に追加するのを忘れてしまったので、addTransientに登録しました.AddScopedの違いを説明できますか? –