ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# 加载配置文件

2019-02-22 18:38:08  阅读:403  来源: 互联网

标签:container 配置文件 C# builder AppDomain static CurrentDomain public 加载


//加载配置文件
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
ConfigurationManager.Configuration = builder.Build();

 

 //注册IOC=Autofac  类

  public class IocManager

  {

        private static ILifetimeScope _container;

        public static void Initialize(params string[] assemblyNamePattens)

        {

            ContainerBuilder builder = new ContainerBuilder();

            _container = builder.Build();

            Initialize(_container, assemblyNamePattens);

        }

        public static void Initialize(ILifetimeScope container, params string[] assemblyNamePattens)

        {

            container.Update(builder =>

            {

                //运行绝对路径=AppDomain.CurrentDomain.BaseDirectory

                Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll")

                    .Where(it => Regex.IsMatch(it, $@"(OA|{assemblyNamePattens.Join("|")})\.[^\\]*\.dll"))

                    .Each(it => AppDomain.CurrentDomain.Load(Path.GetFileNameWithoutExtension(it)));

 

                //注册IOC

                var assembiles = AppDomain.CurrentDomain.GetAssemblies();

                builder.RegisterAssemblyTypes(assembiles)

                    .Except<IDependencySingleton>()

                    .Except<IDependencyRequestSingleton>()

                    .As<IDependency>().AsSelf().AsImplementedInterfaces();

 

                builder.RegisterAssemblyTypes(assembiles)

                    .Except<IDependencyRequestSingleton>()

                    .As<IDependencySingleton>().AsSelf().AsImplementedInterfaces().SingleInstance();

 

                builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())

                    .As<IDependencyRequestSingleton>().AsSelf().AsImplementedInterfaces()

                    .InstancePerLifetimeScope();

            });

        }

 

 

        public static ILifetimeScope GetContainer()

        {

            return _container;

        }

}

 

标签:container,配置文件,C#,builder,AppDomain,static,CurrentDomain,public,加载
来源: https://www.cnblogs.com/chxl800/p/10419994.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有