อัปเดต:วิธีการโพสต์ที่นี่ไม่ถูกต้องอีกต่อไปเมื่อ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()
ตอนนี้คุณสามารถวางคลาสการแมปของคุณที่พวกเขาทำให้คุณรู้สึกและไม่ต้องกังวลเกี่ยวกับการทำแผนที่เสาหินชั้นเดียว