如何使用 Microsoft.Extensions.Configuration 将值保存到 JSON 配置文件中?

How to save value into JSON configuration file using Microsoft.Extensions.Configuration?

正在关注 , I am trying to retrieve and save startup application values using the IConfiguration interface from Microsoft.Extensions.Configuration API。但是,我找不到将这些值更改为设置 JSON 文件的方法。

例如,考虑以下 appSettings.json 配置文件:

"Setting":
{
  "Startup":
   {
      "IsFirstStart": true
   }
}

负责提取的关联class:

public class AppHandler
{
#region fields

  // MS heper contains configuration parameters from JSON file
  private IConfiguration _appConfiguration = null;

  // MS config builder
  private IConfigurationBuilder _appBuilder = null;

  // Is it software first use
  private bool _isFirstStart;

#endregion fields

#region Constructor

private AppHandler()
{
  _appBuilder = new ConfigurationBuilder()
     .SetBasePath(Directory.GetCurrentDirectory())
     .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
     .AddJsonFile($"appsettings.dev.json", optional: true, reloadOnChange: true)
     .AddEnvironmentVariables();

  _appConfiguration = _appBuilder.Build();
}

#endregion Constructor

#region Methods

private AppInitialized()
{
  //  Session initialization has been performed & store back the information in 'appSettings.json' file
  _appConfiguration["IsFirstStart"] = Convert.ToString(_isFirstStart = false);

  /*
   * HOW TO SAVE BACK IsFirstStart change into Json file?
   */
}

#endregion Methods
}

而且,我看过ApplicationSettings class contains Save() method。我可能会改为实施此 class,但有什么区别,您为 UWP / WPF 应用程序推荐哪一个?

在此上下文中,_appConfiguration 只是一个将您的配置保存在内存中的对象。可能的解决方案是将您的配置绑定到 POCO,进行更新,然后创建一个文件流来覆盖您的 json 文件。

   var appConfig = new AppConfig()
        {
            //your appsettings.json props here
        }
        _appConfiguration.Bind(appConfig);

        appConfig.IsFirstStart = "...";

        string json = JsonConvert.SerializeObject(appConfig);
        System.IO.File.WriteAllText("appsettings.json", json);