Описание:
Я создаю приложение ASP.NET Core, используя Autofac, поэтому я следую документации, приведенной для него: https://autofaccn.readthedocs.io/en/latest/integration/aspnetcore.html, должен быть довольно простой путь, но яУ меня есть проблема, мой класс Statup наследуется от Microsoft.AspNetCore.Hosting.StartupBase, что заставляет меня реализовать следующее:
public abstract class StartupBase : IStartup
{
protected StartupBase();
public abstract void Configure(IApplicationBuilder app);
public virtual void ConfigureServices(IServiceCollection services);
public virtual IServiceProvider CreateServiceProvider(IServiceCollection services);
}
пока все в порядке, мой класс Statup выглядит следующим образом
public class Startup : StartupBase
{
readonly IHostingEnvironment hostingEnvironment;
public Startup(IHostingEnvironment hostingEnvironment)
{
//some stuff here
}
public override void ConfigureServices(IServiceCollection services)
{
//some other stuff here
}
// https://autofaccn.readthedocs.io/en/latest/integration/aspnetcore.html
public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterModule(new AutofacModule());
}
public override void Configure(IApplicationBuilder app)
{
//more stuff here
}
}
и Program.cs, просто для примера. Вот пример:
public class Program
{
public static void Main(string[] args)
{
// The ConfigureServices call here allows for
// ConfigureContainer to be supported in Startup with
// a strongly-typed ContainerBuilder.
var host = new WebHostBuilder()
.UseKestrel()
.ConfigureServices(services => services.AddAutofac())
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
Проблема:
После запуска приложения оно должно вызвать метод ConfigureContainer, но это не так.t и я не знаю почему, что означает, что я не могу ввести что-либо, зарегистрированное в классе AutofactModule, мне удается решить эту проблему, но я хочу знать, что происходит за кулисами,
Исправление:
Я удалил наследование из StartupBase и все прошло нормально
Теория:
Я подозреваю, что как-то Autofac в .UserStartup получаетбазовый класс и пытается получить методы из него, но я не могу доказать это и не смог найти правильные слова для его поиска. Может кто-нибудь объяснить мне, почему простое наследование является проблемой здесь?