在缺少非空属性时强制异常
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。
我有一个简单的记录是这样的:
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。