sourcecode

오토매퍼:새 개체를 만들지 않고 속성 값 업데이트

codebag 2023. 6. 2. 20:28
반응형

오토매퍼:새 개체를 만들지 않고 속성 값 업데이트

새 개체를 만들지 않고 오토매퍼를 사용하여 다른 개체의 속성 값을 업데이트하려면 어떻게 해야 합니까?

기존 대상을 사용하는 오버로드를 사용합니다.

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공유한 것.고유 속성의 값은 동일하게 유지됩니다.

여기 관련 소스 코드가 있습니다.

여기서 두 가지 주의할 점이 있습니다.첫째, 일반 맵 호출에 대해 매핑할 유형을 지정할 필요가 없습니다.이는 대상 개체 인스턴스를 전달하기 때문에 대상 개체의 유형에 따라 대상 유형을 결정할 수 있습니다.둘째, 우리는 이 통화의 결과를 변수에 저장하지 않습니다.이는 대상 개체가 제자리에 매핑되어 있고 새 인스턴스를 만들지 않기 때문입니다.

AutoMapper.Mapper.Map(sourceObject, destinationObject);

언급URL : https://stackoverflow.com/questions/2374689/automapper-update-property-values-without-creating-a-new-object

반응형