310

自動マッパーを使用して、新しいオブジェクトを作成せずに別のオブジェクトのプロパティ値を更新するにはどうすればよいですか?

4

3 に答える 3

530

既存の宛先を取るオーバーロードを使用します。

Mapper.Map<Source, Destination>(source, destination);

はい、それは宛先オブジェクトを返しますが、それは他のいくつかのあいまいなシナリオのためだけです。同じオブジェクトです。

于 2010-03-04T00:34:39.347 に答える
29

これを機能させるには、ソースと宛先のタイプが同じタイプであっても、CreateMapを使用する必要があります。つまり、あなたがしたい場合は、 Mapper.Map<User, User>(user1, user2); このようなマップを作成する必要があります Mapper.Create<User, User>()

于 2014-04-12T12:53:26.180 に答える
9

受け入れられた回答で使用されている静的メソッドではなく、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);

destsrcこれで、共有したすべてのプロパティ値で更新されます。その固有のプロパティの値は同じままです。

関連するソースコードは次のとおりです

于 2018-06-26T18:12:53.383 に答える