WCFサービスがあり、ビジネスオブジェクトのDTOを作成しました。
私の質問は、2つの間のマッピングをどこに置くかです。
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に公開する必要はありません)。
標準的な方法があるかどうか疑問に思いましたか?