規約ベースの自動マッピングのおかげで、ドメイン オブジェクトからマッピングされた DTO がいくつかあります。つまり、アドレス フィールドが DTO にフラット化されています。
これは Domain -> DTO 変換では問題なく機能しますが、別の方法では Address を手動で「非平坦化」する必要があります。
マッピング構成を「プレフィックス」する可能性があるのではないかと思うので、次のようなことができます
Mapper.CreateMap<PersonDTO, Address>().WithPrefix("Address");
...
Mapper.CreateMap<PersonDTO, Person>()
.ForMember(d => d.Address, opt => opt.MapFrom(src => Mapper.Map<Address>(src) ))
そうしないと、各 Address フィールドを手動でマップする必要があり、より複雑なオブジェクトではこれが問題になります。
ドメイン オブジェクトと DTO
class Person
{
public string FirstName {get;set;}
public string LastName {get;set;}
public Address Address {get;set;}
}
class Address
{
public string Street {get;set;}
public string PostCode {get;set;}
}
および次の DTO:
class PersonDTO
{
public string FirstName {get;set;}
public string LastName {get;set;}
public string AddressStreet {get;set;}
public string AddressPostCode {get;set;}
}
編集
グローバル構成の「認識されたプレフィックス」を認識しています。特定のマップに必須のプレフィックス(「認識されたものの1つ」ではない)を設定したいと思います。