У меня есть служба 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 ).
Просто интересно, есть ли стандартный способ?