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

问题描述 投票:0回答:1

以下是 本例我正试图通过使用 IC配置 介面 Microsoft.Extensions.Configuration API。然而,我没有找到一种方法来改变这些值到设置JSON文件中。

作为一个例子,考虑以下内容 appSettings.json 配置文件。

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

A是负责提取的相关类。

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
}

此外,我还看到 应用程序设置 类包含 保存()方法. 我可能会实现这个类来代替,但有什么区别,你建议UWP WPF应用程序使用哪个类?

c# .net json config .net-standard
1个回答
0
投票

在这个上下文中,_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);
© www.soinside.com 2019 - 2024. All rights reserved.