基于appsettings配置文件的Autofac注册

问题描述 投票:1回答:1

如果应用程序设置中存在某些配置信息,是否可以通过Autofac注册组件?

例如:

如果配置文件中存在HistorianSdk部分,请注册此层。

Appsettings example

        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();
    }

如果是,执行此操作的最佳方法是什么?预先感谢。

c# configuration autofac appsettings
1个回答
0
投票

您可以在startup.cs中注册属性时将属性传递给autofac模块。

使用以下appsettings.json文件时:

{
  "UseSdk": true
}

[您可以在注册期间传递这样的属性:


builder.RegisterModule(new Bootstrap
{
   UseHistorianSdk = Configuration.GetValue<bool>("UseSdk");
});
© www.soinside.com 2019 - 2024. All rights reserved.