中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

DotNetCore跨平臺~在appsettings.json里自(zi)定(ding)義配(pei)置(zhi)項

回到目錄

DotNetCore里一(yi)(yi)切都是依賴注(zhu)入(ru)的(de)(de)(de),對于appsettings這個可擴展的(de)(de)(de)配置對象也(ye)不例外(wai),它位于項目(mu)根目(mu)錄,一(yi)(yi)般在startup里去(qu)注(zhu)冊它,在類中通過構造方法注(zhu)入(ru)來獲取當前的(de)(de)(de)對象,以便去(qu)使用(yong)它,當然我們(men)也(ye)可以自己去(qu)構建(jian)和使用(yong)它,下(xia)面我就來總結(jie)一(yi)(yi)下(xia)。

傳統方法,startup注入,構造方法使用

1 注意配置類

   public class RedisConfiguration
    {
        #region 屬性成員

        /// <summary>
        /// 文件上(shang)傳(chuan)路徑
        /// </summary>
        public string Host { get; set; }

        /// <summary>
        /// 允(yun)許上(shang)傳的文件格式
        /// </summary>
        public string Password { get; set; }
        /// <summary>
        /// 圖片上傳最(zui)大值KB
        /// </summary>
        public int IsProxy { get; set; }
        #endregion
    }

2 在appsettings里添加它的內(nei)容

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

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

3 在控制器里使(shi)用它,當然你可以(yi)在基類中定(ding)義它的(de)使(shi)用方式,但注入(ru)的(de)入(ru)口還是(shi)在構造方法上

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

這時,你的AppConfiguration在被(bei)(bei)加載(zai)后,就有(you)值了,是在程序運行時被(bei)(bei)注入進來的(de)!

屬性中注入并且使用

appsetting的(de)(de)(de)內容不變(bian),只是(shi)在(zai)屬性(xing)中去封裝了配置注(zhu)入(ru)與獲取(qu)的(de)(de)(de)過程(cheng),注(zhu)意,為了考慮性(xing)能,你可以把它的(de)(de)(de)建立(li)和獲取(qu)做成(cheng)單例,這點我就不設計(ji)了!

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

 在(zai)控制(zhi)器上(shang),可以直接(jie)使用它了,我(wo)這個屬性是做在(zai)所有控制(zhi)器的父類上(shang)的。

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

感謝各位的閱讀!

對(dui)于.net core的研究我們還在繼(ji)續(xu),希望core2.0,standard2.0不會讓我們失望!

聽說它已經(jing)實(shi)現了.net frameworks 4.6.1所有的功(gong)能!

回到目錄

posted @ 2017-08-17 16:08  張占嶺  閱讀(3098)  評論(2)    收藏  舉報