回去目录

DotNetCore里一切都以依赖注入的,对于appsettings那么些可增加的安插对象也不例外,它位于项目根目录,一般在startup里去注册它,在类中经过构造方法注入来获得当前的靶子,以便去采取它,当然大家也能够友善去创设和动用它,上边笔者就来总计一下。

历史观格局,startup注入,构造方法使用

1 注意配置类

   public class RedisConfiguration
    {
        #region 属性成员

        /// <summary>
        /// 文件上传路径
        /// </summary>
        public string Host { get; set; }

        /// <summary>
        /// 允许上传的文件格式
        /// </summary>
        public string Password { get; set; }
        /// <summary>
        /// 图片上传最大值KB
        /// </summary>
        public int IsProxy { get; set; }
        #endregion
    }

2 在appsettings里添加它的剧情

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  },

  "RedisConfiguration": {
    "Host": "localhost:6379",
    "Password": "bobo123#",
    "IsProxy": "0"
  }
}

3
在控制器里应用它,当然你能够在基类中定义它的选取方法,但注入的输入照旧在构造方法上

  public class ApiControllerBase : Controller
    {
        private readonly IOptions<RedisConfiguration> AppConfiguration;
        public ApiControllerBase(IOptions<RedisConfiguration> appConfiguration)
        {
            AppConfiguration = appConfiguration;
        }
   }

json,此刻,你的AppConfiguration在被加载后,就有值了,是在程序运营时被注入进来的!

属性中注入并且利用

appsetting的始末不变,只是在质量中去封装了布置注入与收获的长河,注意,为了考虑质量,你能够把它的树立和得到做成单例,那一点小编就不设计了!

       public RedisConfiguration AppConfigurations
        {
            get
            {
                var config = new ConfigurationBuilder()
                             .AddInMemoryCollection()
                             .SetBasePath(Directory.GetCurrentDirectory())
                             .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                             .Build();

                var sp = new ServiceCollection().AddOptions().Configure<RedisConfiguration>(
                         config.GetSection("RedisConfiguration")).BuildServiceProvider();
                var _appConfiguration = sp.GetService<IOptions<RedisConfiguration>>();
                return _appConfiguration.Value;
            }
        }

 在控制器上,能够向来利用它了,笔者那本性情是做在颇具控制器的父类上的。

        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] {
                AppConfigurations.Host,
                AppConfigurations.Password,
                AppConfigurations.IsProxy.ToString()
            };
        }

谢谢各位的翻阅!

对于.net core的钻研大家还在接二连三,希望core2.0,standard2.0不会让大家失望!

据悉它早已落到实处了.net frameworks 4.6.1具有的作用!

回去目录

相关文章

网站地图xml地图