如果应用程序设置中存在某些配置信息,是否可以通过Autofac注册组件?
例如:
如果配置文件中存在HistorianSdk部分,请注册此层。
protected override void Load(ContainerBuilder builder)
{
**// Todo: do this based on config file**
RegisterHistorianSdkLayer(builder);
}
private void RegisterHistorianSdkLayer(ContainerBuilder builder)
{
builder.RegisterAssemblyTypes(typeof(TagsReader).GetTypeInfo().Assembly)
.Where(x => x.Namespace != null && x.Namespace.Contains("Repositories"))
.AsImplementedInterfaces()
.InstancePerLifetimeScope();
builder.Register(c =>
{
var config = c.Resolve<IConfiguration>();
var sdkConfigurations =
config.GetSection("Plugins:HistorianSdk").Get<IEnumerable<HistorianSdkConfig>>();
return sdkConfigurations;
}).SingleInstance();
builder.RegisterType<DataPointMapper>()
.AsSelf()
.SingleInstance();
builder.RegisterType<Domain.HistorianSdk.Config.ConnectionFactory>()
.AsSelf()
.InstancePerDependency();
}
如果是,执行此操作的最佳方法是什么?预先感谢。
您可以在startup.cs
中注册属性时将属性传递给autofac模块。
使用以下appsettings.json
文件时:
{
"UseSdk": true
}
[您可以在注册期间传递这样的属性:
builder.RegisterModule(new Bootstrap
{
UseHistorianSdk = Configuration.GetValue<bool>("UseSdk");
});