我有一个 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)。
只是想知道是否有标准方法?