文章出處

想象一下,你寫一個控制臺應用程序,你想要從配置文件中以強類型方式讀取配置。

.NET Core 可以幫助我們解決。 通常我會在ASP.NET Core MVC中演示,但簡單起見,只在控制臺應用程序中演示。

 

讓我們創建兩個配置類,用于保存應用程序和模塊名稱。

public class MySettings
{
    public string ApplicationName { get; set; } 
}

public class MyModuleSettings
{
    public string ModuleName { get; set; }
}

 

 

應用程序配置文件如下所示:

{
  "ApplicationName": "My sample application",

  "SectionA": {
    "ModuleName": "My sample module"
  }
}

 

 

最后,讓我們在應用程序中使用它。

public class Program
{
    public static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddEnvironmentVariables();

        IConfigurationRoot configuration = builder.Build();

        var settings = new MySettings();
        configuration.Bind(settings);

        var moduleSettings = new MyModuleSettings();
        configuration.GetSection("SectionA").Bind(moduleSettings);

        Console.WriteLine($"My application name is '{settings.ApplicationName}'");
        Console.WriteLine($"My module name is '{moduleSettings.ModuleName}'");

        Console.ReadLine();
    }
}

所有的實現都是通過“Bind”方法。

不要忘記添加所需的依賴關系。 project.json應該包含以下內容:

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.Extensions.Configuration": "1.1.0",
    "Microsoft.Extensions.Configuration.Binder": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.1"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}

運行結果:

在.NET Core應用程序中使用強類型配置類非常容易!希望本文對你有所幫助~。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()