在缺少非空属性时强制异常

Force exception on missing non-null properties

我有一个简单的记录是这样的:

public record Filter
{
    public int Id { get; init; }
}

属性 明确不是非空的。我希望框架在没有 ID 的情况下初始化类型 Filter 时抛出异常。我该怎么做?

现在它只是将“0”作为默认值,我不知道破坏的初始化。

使用构造函数:

public record Filter(int Id);

现在,如果没有明确给出 Id,您将得到编译器错误。无论如何,这比运行时异常更可取。

我搜索了一种适用于 [ApiController] 的方法,所以上面的方法对我不起作用(但我没有具体说明,因为我不知道它会有所不同)。所以如果验证是针对REST的,接受的答案是不行的,正确的做法是:

public record Filter
{
    [Required]
    public int? Id { get; init; }
}

(请注意,int 必须可以为 null,否则框架会将其默认为 0,并且永远不会完成所需的验证。)

使用该设置,如果缺少必填字段,端点将自动 return HTTP 代码 400。