7.投影
AutoMapper有一種自定義映射,叫投影。接下來我們通過一個示例來了解它
7.1示例
//源對象
public class CalendarEvent
{
public DateTime Date { get; set; }
public string Title { get; set; }
}
//目标對象
public class CalendarEventForm
{
public DateTime EventDate { get; set; }
public int EventHour { get; set; }
public int EventMinute { get; set; }
public string Title { get; set; }
}
映射說明:把日期拆開分别映射到不同字段
CalendarEvent中屬性 | 說明 | CalendarEventForm的屬性 |
---|---|---|
Date | Date中的年月日-> | EventDate |
Date中小時-> | EventHour | |
Date中分鐘-> | EventMinute |
[TestClass]
public class Projection
{
[TestMethod]
public void ProjectionTest()
{
var calendarEvent = new CalendarEvent
{
Date = new DateTime(2008, 12, 15, 20, 30, 0),
Title = "Company Holiday Party"
};
// 初始化映射
Mapper.Initialize(cfg =>
cfg.CreateMap<CalendarEvent, CalendarEventForm>()
.ForMember(dest => dest.EventDate, opt => opt.MapFrom(src => src.Date.Date))
.ForMember(dest => dest.EventHour, opt => opt.MapFrom(src => src.Date.Hour))
.ForMember(dest => dest.EventMinute, opt => opt.MapFrom(src => src.Date.Minute)));
CalendarEventForm form = Mapper.Map<CalendarEvent, CalendarEventForm>(calendarEvent);
Assert.AreEqual(new DateTime(2008, 12, 15), form.EventDate); // 通過
Assert.AreEqual(20, form.EventHour);// 通過
Assert.AreEqual(30, form.EventMinute);// 通過
Assert.AreEqual("Company Holiday Party", form.Title);// 通過
}
}