업데이트 : 여기에 게시 된 접근 방식은 SelfProfiler
AutoMapper v2에서 제거되었으므로 더 이상 유효하지 않습니다 .
나는 Thoai와 비슷한 접근법을 취할 것입니다. 그러나 내장 SelfProfiler<>
클래스를 사용하여 맵을 처리 한 다음 Mapper.SelfConfigure
함수를 사용하여 초기화합니다.
이 객체를 소스로 사용 :
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public string GetFullName()
{
return string.Format("{0} {1}", FirstName, LastName);
}
}
그리고 이것들은 목적지입니다 :
public class UserViewModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class UserWithAgeViewModel
{
public int Id { get; set; }
public string FullName { get; set; }
public int Age { get; set; }
}
다음과 같은 프로파일을 작성할 수 있습니다.
public class UserViewModelProfile : SelfProfiler<User,UserViewModel>
{
protected override void DescribeConfiguration(IMappingExpression<User, UserViewModel> map)
{
//This maps by convention, so no configuration needed
}
}
public class UserWithAgeViewModelProfile : SelfProfiler<User, UserWithAgeViewModel>
{
protected override void DescribeConfiguration(IMappingExpression<User, UserWithAgeViewModel> map)
{
//This map needs a little configuration
map.ForMember(d => d.Age, o => o.MapFrom(s => DateTime.Now.Year - s.BirthDate.Year));
}
}
애플리케이션에서 초기화하려면이 클래스를 작성하십시오.
public class AutoMapperConfiguration
{
public static void Initialize()
{
Mapper.Initialize(x=>
{
x.SelfConfigure(typeof (UserViewModel).Assembly);
// add assemblies as necessary
});
}
}
global.asax.cs 파일에이 줄을 추가하십시오 : AutoMapperConfiguration.Initialize()
이제 매핑 클래스를 이해하기 쉬운 곳에 배치하고 하나의 모 놀리 식 매핑 클래스에 대해 걱정하지 않아도됩니다.