我使用 C# 9.0record类型作为 .NET 5.0 Web API 项目的绑定模型。某些属性是必需的。
我正在使用record位置语法,但收到错误。
public record Mail(
System.Guid? Id,
[property: Required]
string From,
[property: Required]
string[] Tos,
[property: Required]
string Subject,
string[]? Ccs,
string[]? Bccs,
[property: Required]
Content[] Contents,
Attachment[]? Attachments
);
Run Code Online (Sandbox Code Playgroud)
然后将其公开为我的Index操作的绑定模型:
public async Task<ActionResult> Index(Service.Models.Mail mailRequest)
{
…
}
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试发出请求时,都会收到以下错误:
记录类型“Service.Models.Mail”在属性“Contents”上定义了将被忽略的验证元数据。“内容”是记录主构造函数中的一个参数,验证元数据必须与构造函数参数相关联。
我尝试删除该属性上的Contents属性,但是对于下一个(先前的)属性它失败了。我尝试使用[param: …]而不是[property: …],以及混合它们,但不断收到相同类型的错误。
我环顾了网络,并没有发现任何针对 C# 9 记录以不同方式处理注释的建议。我尽力了,但我没有想法——除了将我的记录转换为 POCO。