gpt4 book ai didi

c# - 如何翻译 ServiceStack 中的复杂对象?

转载 作者:太空狗 更新时间:2023-10-30 00:32:47 25 4
gpt4 key购买 nike

假设我有两个对象:

class Order
{
string Name {get; set;}
Customer Customer {get; set;}
Item[] Items {get; set;}
}

class OrderDTO
{
string Name {get; set;}
CustomerDTO Customer {get; set;}
ItemDTO[] Items {get; set;}
}

如果我收到一个对象 orderDTO那是完全填充并做orderDTO.TranslateTo<Order>()结果将只有 Name填充,而不是 CustomerItems .有没有办法进行递归翻译,或者唯一的选择是手动翻译客户和每个项目?

最佳答案

我会将其包装在可重复使用的扩展方法中,例如:

public static OrderDTO ToDto(this Order from)
{
return new OrderDTO {
Name = from.Name,
Customer = from.ConvertTo<CustomerDTO>(),
Items = from.Items.Map(x => x.ConvertTo<ItemDTO>()).ToArray(),
}
}

当您需要映射到订单 DTO 时可以调用它,例如:

return order.ToDto();

ServiceStack 的更多示例 Auto Mapping is available on the wiki .

ServiceStack 的 party-line 是,如果您的映射需要的不仅仅是自动映射器可推断的默认常规行为,那么您应该将其包装在 DRY 扩展方法后面,以便您的映射所需的扩展和自定义在中清晰地表达并轻松维护代码。这被推荐用于 ServiceStack 中的许多事情,例如在代码中维护非常规和复杂的 IOC 绑定(bind),而不是依赖于晦涩难懂的重量级 IOC 功能。

如果您愿意,您当然可以采用 3rd 方工具,例如 AutoMapper。

关于c# - 如何翻译 ServiceStack 中的复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15408701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com