gpt4 book ai didi

c# - 如何在 .net core 3.1 中使用 ConfigurationBulder 绑定(bind)到配置类

转载 作者:行者123 更新时间:2023-12-04 15:36:54 26 4
gpt4 key购买 nike

我想用ConfigurationBuidler阅读我的 appsettings.json文件。我看不出我做错了什么。

我的文件是

{
"comment": "this gets copied to bin\\debug on build. the app updates the copy. However to remember the settings you need to paste them here",
"col1Width": "344"
}

我的测试失败
[TestMethod]
public void TestMethod1()
{
var configuration = Helper.LoadConfiguration("appsettings.json");
Assert.IsTrue(configuration.Properties.Keys.Contains("col1Width")); // fails here
}

我的助手类是
public static  class Helper
{
public static ConfigurationBuilder LoadConfiguration(string filename)
{
var configuration = new ConfigurationBuilder();
var currentDirectory = System.IO.Directory.GetCurrentDirectory();
configuration.SetBasePath(currentDirectory);
configuration.AddJsonFile(path: filename, optional: false, reloadOnChange: true);
configuration.Build();
return configuration;
}
}

[更新]

我根据 Marco 指出的博客文章更正了问题标题并更新了代码如下。

只有 .Bind不可用
public static  class Helper
{
public static FeedReadConfiguration GetApplicationConfiguration( )
{
var configuration = new FeedReadConfiguration();
var currentDirectory = System.IO.Directory.GetCurrentDirectory();

var iConfig = GetIConfigurationRoot(currentDirectory);

iConfig
.GetSection("FeedRead")
.Bind(configuration); // Not available

return configuration;
}

public static IConfigurationRoot GetIConfigurationRoot(string outputPath)
{
return new ConfigurationBuilder()
.SetBasePath(outputPath)
.AddJsonFile("appsettings.json")
.Build();
}

}
public class FeedReadConfiguration
{
public int Col1Width { get; set; }
}

enter image description here

最佳答案

根据显示的设置文件,没有 "FeedRead"部分

这些设置需要直接从根读取。

public static class Helper {
public static FeedReadConfiguration GetApplicationConfiguration( ) {

var currentDirectory = System.IO.Directory.GetCurrentDirectory();

var iConfig = GetIConfigurationRoot(currentDirectory);

//Microsoft.Extensions.Configuration.Binder.dll
FeedReadConfiguration configuration = iConfig.Get<FeedReadConfiguration>();

return configuration;
}

public static IConfiguration GetIConfigurationRoot(string outputPath) {
return new ConfigurationBuilder()
.SetBasePath(outputPath)
.AddJsonFile("appsettings.json")
.Build();
}
}

引用 Configuration in ASP.NET Core

引用 Options pattern in ASP.NET Core

关于c# - 如何在 .net core 3.1 中使用 ConfigurationBulder 绑定(bind)到配置类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59440111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com