回答:
既存の宛先を受け取るオーバーロードを使用します。
Mapper.Map<Source, Destination>(source, destination);
はい、宛先オブジェクトを返しますが、これは他のあいまいなシナリオの場合のみです。同じオブジェクトです。
これを機能させるには、ソースと宛先のタイプが同じであっても、それらのタイプに対してCreateMapを実行する必要があります。つまりMapper.Map<User, User>(user1, user2);
、このようなマップを作成する必要がある
場合
Mapper.Create<User, User>()
受け入れられた回答で使用されている静的メソッドではなく、IMapperのインスタンスメソッドを使用する場合は、以下を実行できます(でテスト済みAutoMapper 6.2.2
)
IMapper _mapper;
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Source, Destination>();
});
_mapper = config.CreateMapper();
Source src = new Source
{
//initialize properties
}
Destination dest = new dest
{
//initialize properties
}
_mapper.Map(src, dest);
dest
src
これで、共有されているすべてのプロパティ値で更新されます。その固有のプロパティの値は変わりません。