Configuration class
public class AutoMapperWebConfiguration { public static MapperConfiguration Configure() { return new MapperConfiguration(cfg => { cfg.AddProfile(new MeetingProfile()); cfg.AddProfile(new ClubProfile()); }); } }
Profile 範例
public class ClubProfile : Profile { public ClubProfile() { CreateMap<ClubViewModel, Club>(); CreateMap<Club, ClubViewModel>() .ForMember(dest => dest.DisplayText, opt => opt.ResolveUsing(src => { if (string.IsNullOrEmpty(src.ChineseAbbr)) { return $"{src.Name}({src.Abbr})"; } else { return $"{src.ChineseAbbr}({,src.Abbr})"; } })); } }相對於使用前直接建 config,套用 Profile 的話,官方建議在其初始化時做 CreateMap()。
以上兩個我是開一個 AutoMapper 資料夾裝一起,不太確定最佳實作應該是怎麼做。
然後在 Global.asax 讓程式跑起來的時候把設定一併帶起來。
public class MvcApplication : System.Web.HttpApplication { internal static MapperConfiguration MapperConfig { get; set; } protected void Application_Start() { // skip MapperConfig = AutoMapperWebConfiguration.Configure(); } }
在 Controller 就有 mapper 可以建來用了
public class MeetingsController : Controller { private IMapper _mapper = MvcApplication.MapperConfig.CreateMapper(); // GET: Meetings public ActionResult Index() { // skip } }
ref:SO
沒有留言:
張貼留言