gpt4 book ai didi

c# - 数据传输对象 - 在 DTO 或业务对象中进行映射?

转载 作者:太空狗 更新时间:2023-10-29 21:06:04 30 4
gpt4 key购买 nike

我有一个 WCF 服务,并且刚刚为一个业务对象创建了一个 DTO。

我的问题是两者之间的映射放在哪里?

A) 在 DTO 中?

public class PersonDTO
{
[DataMember] public string Id { get; set; }
[DataMember] public string Name { get; set; }

public void CloneFrom(Person p)
{
Id = p.Id;
Name = p.Name;
}

public void Populate(Person p)
{
p.Id = Id;
p.Name = Name;
}
}

B) 在业务对象中?

public class Person
{
public string Id { get; set; }
public string Name { get; set; }

public void CloneFrom(PersonDTO dto)
{
Id = dto.Id;
Name = dto.Name;
}

public PersonDTO GetDTO()
{
return new PersonDTO()
{
Id = Id;
Name = Name;
}
}
}

我喜欢 A 中的关注点分离(业务对象不了解 DTO),但我更喜欢 B 中的封装(不需要将业务对象的内容暴露给 DTO)。

只是想知道是否有标准方法?

最佳答案

我认为这需要一个单独的类,因为 BO 和 DTO 都不应该关心它们向另一个类的转换。

我个人使用 automapper 库进行对象转换。通过像您的示例中的简单转换,映射是在一行代码中完成的,复杂的转换也很容易设置。

如果您想要映射自己,您仍然可以使用扩展方法来将映射实现与您的 DTO 和 BO 类分开。

关于c# - 数据传输对象 - 在 DTO 或业务对象中进行映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10299373/

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