gpt4 book ai didi

c# - 将 IConfiguration 绑定(bind)到 C# 记录类型

转载 作者:行者123 更新时间:2023-12-04 11:56:53 25 4
gpt4 key购买 nike

我想将配置绑定(bind)到记录类型。
这是配置类型的定义(它没有无参数构造函数):

public record AppConfiguration(string ConnectionString);
这是 sample Main方法:
public static void Main(string[] args)
{
var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
AppConfiguration appConfig = new(); // error
configuration.GetSection("app").Bind(appConfig);
}
如果我将定义转换为:
public record AppConfiguration
{
public string ConnectionString {get; init;}
}
它按预期工作,但我宁愿使用记录的“单行”定义。
这个用例的记录是正确的吗?

最佳答案

您的第一种方法的问题在于,您使用单行声明自动定义了 primary constructor , 哪一个

causes the implicitly declared default class constructor, if present,to be suppressed.


在第二种情况下,主构造函数是无参数构造函数,因此它按预期工作。为了消除任何疑问, init访问器向后兼容,所以即使 ConnectionString不直接初始化,它取值 null . Bind方法将使用反射正确填充它,我猜。

关于c# - 将 IConfiguration 绑定(bind)到 C# 记录类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65859447/

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