我有一个这样的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);
    ....
}

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

错误CS 9035:必须在对象初始化项或属性构造函数中设置必需的成员"Fields. Dock".

由于我知道下面的.Bind()(与[Required]属性和设置验证(此处未显示)结合)将确保Options的所有属性都正确设置,因此我想禁用编译器警告.

不幸的是,添加#pragma warning disable CS9035没有任何效果.

我知道,我可以像这样初始化构造器中所需的Endpoint成员,但感觉不好,看起来很尴尬:

var openAIOptions = new OpenAIOptions { Endpoint = null! }

我还有哪些其他 Select ?

推荐答案

不要使用Get<T>来代替Bind

var options = section.Get<Options>()

Csharp相关问答推荐

当MD5被废弃时,如何在Blazor WASM中使用它?

如何将字节数组转换为字符串并返回?

如何在Visual Studio中为C# spread操作符设置格式规则?

使用C#中的Shape API从Azure目录获取所有用户

哪个nuget包含SecurityStampValidatorOptions

如何在C#中删除一个特殊字符,如"使用Regex"

如何在C#中将对象[*,*]直接转换为字符串[*,*]?

MudBlazor—MudDataGrid—默认过滤器定义不允许用户修改基本过滤器

选取器与.NET Maui MVVM的绑定属性

如何从ASP.NET核心MVC视图和Blazor传递数据

如何在CSharp中将json字符串转换为DataTable?

为什么Docker中没有转发该端口?

匿名类型的AbstractValidator

FakeItEasy自动嘲弄内容

如何使用.NET 8.0中新的CompositeFormat类?

如何在C#.NET桌面应用程序中动态更改焦点工具上的后退 colored颜色

Xamarin中出错.表单:应用程序的分部声明不能指定不同的基类

使用postman 测试配置了身份的.NET 6应用程序

.NET文档对继承的困惑

无法创建&Quot;&Quot;类型的实例,因为无法将一个或多个参数绑定到