다음 코드가 있습니다.
모든 필드는 원본에서 대상 개체로 잘 매핑됩니다.
그러나 대상 개체에는 계산해야 할 필드가 하나 있습니다.AutoMapper에서 사용자 지정 논리를 추가하려면 어떻게해야합니까?
예 : DestinationObj.Status는 sourceobj의 특정 필드에 따라 설정할 수 있습니다.
내가 코드를 작성한다면 그것과 유사합니다 :
foreach (var rec in listData)
{
string status;
if (!String.IsNullOrEmpty(rec.Field1))
{
status = "Stage 1";
}
if (!String.IsNullOrEmpty(rec.Field2))
{
status = "Stage 2";
}
if (!String.IsNullOrEmpty(rec.Field3))
{
status = "Stage 3";
}
}
내가 AutoMapper에서 비슷한 일을 할 수 있습니까?
var config = new MapperConfiguration(c =>
{
c.CreateMap<SourceObj, DestinationObj>()
.ForMember(x => x.Status, m => m.MapFrom([Not sure at this point ]));
});
편집 : 목록 destinObj = 새 목록();
foreach (var rec in listSourceObject)
{
destinationObj do = new destinationObj();
// Manually map all of the fields...
string status;
if (!String.IsNullOrEmpty(rec.Field1))
{
do.status = "Stage 1";
}
if (!String.IsNullOrEmpty(rec.Field2))
{
do.status = "Stage 2";
}
if (!String.IsNullOrEmpty(rec.Field3))
{
do. status = "Stage 3";
}
destinObj.Add(do);
}
'listData'는 어디에서 왔습니까? '상태'는 어디로 이동합니까? 적용하려는 메소드가 맵핑과 관련이없는 것처럼 보입니다. – krillgar
수정 코드를 정리했습니다. – PrivateJoker
아직 명확하지 않습니다. 두 객체가 모두 자신의 컬렉션입니까? – krillgar