如何解决如何在 MassTransit 响应中返回接口的 ICollection?
所以我有这样的东西。
public interface IFoundUserDataResponse
{
string UserName { get; }
string DisplayName { get; }
string Email { get; }
ICollection<INotifications> Notifications { get; }
}
我的班级是这样的
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string DisplayName{ get; set; }
public string Email{ get; set; }
public ICollection<Notification> Notifications { get; set; }
}
在 MassTransit 响应中,我有这个,除了通知之外的所有内容都被映射。无论我尝试什么,我总是得到 null 响应。
public async Task Consume(ConsumeContext<IProfileDataRequest> context)
{
var user = await _userService.GetProfileByUsernameAsync(context.Message.UserName);
await context.RespondAsync<IFoundUserDataResponse>(new
{
user.UserName,user.DisplayName,user.Email,user.Notifications
});
}
我想我需要将 List<Notification>
映射到 List<INotification>
但是如何 ???
解决方法
您可以将消息协定更改为 IList<INotification>
或 IEnumerable<INotification>
,甚至是数组 INotification[]
。
消息初始值设定项应根据需要转换集合类型。只要 Notification
在结构上与 INotification
兼容,元素类型的属性也应该转换。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。