0
Ich möchte eine Instanz einer Route in der Startkonfiguration meiner App verwenden, indem ich den DI-Container verwende und die Instanz nicht fest codiere, gibt es eine Möglichkeit, das zu tun?Den DI-Container in dotnetcore holen
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()));
});
}
Danke für die Hilfe, aber ich bekomme diese Ausnahme: "Kein Service für den Typ 'Main.Config.LandingPageRouter' wurde registriert." –
Ich bin mir nicht sicher, ob ich das verstehe. Wenn es sich nicht im DI-Container befindet, bedeutet dies, dass es nicht als Dienst registriert ist. Sie können versuchen, 'services.AddScoped();' davor in der 'ConfigureServices'-Methode Ihrer Startup-Klasse auszuführen. –
Eigentlich habe ich vergessen, es zur Registrierungszeit hinzuzufügen, also habe ich es mit addTransient registriert, können Sie den Unterschied zwischen AddScoped erklären? –