【发布时间】:2022-02-02 21:02:41
【问题描述】:
我有以下要求
[
{
"firstName": "first_name",
"lastName": "last_name",
"phoneNumber": "phone_niumber",
"email": "emai_domaon",
"fax": "fax_number",
"phoneNumberExt": "ext1",
"mobileNumber": "394858"
},
{
"firstName": "first_nam2e",
"lastName": "last_name2",
"phoneNumber": "phone_2niumber",
"email": "emai_domaon2",
"fax": "fax_number2",
"phoneNumberExt": "ext12",
"mobileNumber": "3948528"
}
]
它是一个数组请求,我如何定义IRequestHandler, 我创建了另一个类并在处理程序类中使用
public class ContactCommandRequest : BaseContact
{
/// <summary>
/// Gets or sets phone number extension.
/// </summary>
public string PhoneNumberExt { get; set; }
/// <summary>
/// Gets or sets mobile number.
/// </summary>
public string MobileNumber { get; set; }
}
并为 IRequest 使用另一个类
public class ContactCommand : IRequest<StudentRegisterResponse>
{
public ContactCommand(List<ContactCommandRequest> req)
{
this.Contacts = req;
}
public List<ContactCommandRequest> Contacts { get; private set; }
}
内部控制器
public async Task<IActionResult> ContactDetails([FromBody] List<ContactCommand> request, CancellationToken cancellationToken = default)
{
return Ok(await this.mediator.Send(new ContactCommand(request), cancellationToken));
}
MediatR中处理数组列表请求有没有更好的方法
【问题讨论】:
-
似乎是一些双重嵌套。你的控制器得到一个
List<ContactCommand>,但这个列表中的每个项目也有一个List<ContactCommandRequest>。所以清理这个设计问题(如果是一个)。此外,使用IRequest<IReadOnlyList<StudentRegisterResponse>>(或类似的)和相应的处理程序来使用处理程序中的列表是合法的。 -
@Oliver 存在设计问题,我只关注该问题。如何使用 mediatr 处理列表,您能否指导修复它
标签: c# microservices cqrs mediatr