Я новичок в создании и регистрации модулей, но я пытаюсь лучше понять процесс в целом. В настоящее время я пытаюсь внедрить зависимость в модуль autofa c, но я думаю, что проблема в том, что autofa c регистрирует свои модули до того, как может произойти внедрение зависимости. Вот мой модуль безопасности:
public class SecurityModule : Module
{
private readonly IConfiguration configuration;
public SecurityModule(IConfiguration configuration)
{
this.configuration = configuration;
}
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<TeamManager>()
.WithParameter("tenantName", this.configuration["TenantName"])
.InstancePerDependency();
}
}
Вот раздел в program.cs, где я регистрирую модуль:
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>(builder =>
{
builder.RegisterAssemblyModules(typeof(Startup).Assembly);
builder.RegisterModule<LoggingModule>();
builder.RegisterModule(new ConfigurationModule(args));
builder.RegisterModule<CXDatabaseModule>();
builder.RegisterModule<SecurityModule>();
})
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddLog4Net();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(options =>
{
options.Limits.MaxRequestBodySize = 209715200;
});
webBuilder.UseStartup<Startup>();
})
.UseNServiceBus((configuration, container) =>
{
return CreateStartableEndpoint(configuration, container);
});
}
И это ошибка, которую я получаю. Есть ли способ указать, что этот модуль должен быть зарегистрирован на более позднем этапе? Или мне не хватает важной информации?
DependencyResolutionException: ни один из конструкторов, найденных с 'Autofa c .Core.Activators.Reflection.DefaultConstructorFinder' на тип 'inQuba.CX.Web. Api.AutofacIntegration.SecurityModule 'может быть вызван с доступными службами и параметрами: Невозможно разрешить параметр' Microsoft.Extensions.Configuration.IConfiguration configuration 'конструктора' Void .ctor (Microsoft.Extensions.Configuration.IConfiguration) '.