我可以取消规则 CS9035 一次吗?

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

我有一个像这样的

Options
类(注意
required
关键字):

public class Options
{
    [Required]
    public required string Endpoint { get; set; }
}

它是从这样的配置加载的:

public static IServiceCollection AddOptions(this IServiceCollection services, IConfigurationSection section)
{
    var options = new Options();
    section.Bind(options);
    ....
}

构造函数行现在让编译器抱怨:

错误 CS9035:必须在对象初始值设定项或属性构造函数中设置必需的成员“Options.Endpoint”。

因为我知道下面的

.Bind()
(与
[Required]
属性和设置验证(此处未显示)结合使用)将确保
Options
的所有属性都已正确设置,所以我想禁用编译器警告。

不幸的是,添加

#pragma warning disable CS9035
没有效果。

我知道,我可以像这样在构造函数中初始化所需的

Endpoint
成员,但这感觉不太好而且看起来很尴尬:

var openAIOptions = new OpenAIOptions { Endpoint = null! }

我还有哪些其他选择?

c# compiler-warnings required-field
2个回答
0
投票

您可以在类中的构造函数中将 Endpoint 与 SetsRequiredMembers 属性一起设置为 null:

[SetsRequiredMembers]
public Options()
{
    Endpoint = null!;
}

0
投票

如果

Bind
使用
Get<T>

var options = section.Get<Options>()
© www.soinside.com 2019 - 2024. All rights reserved.