asp.net-mvc – 没有CreateMap的简单转换时的Automapper错误
发布时间:2020-12-16 07:44:20 所属栏目:asp.Net 来源:网络整理
导读:我有这两个型号: public class SiteSettingsViewModel{ public decimal SubscriptionFee { get; set; }}public class SiteSettings{ public decimal SubscriptionFee { get; set; }} 和代码: var model = Mapper.MapSiteSettings,SiteSettingsViewModel(se
我有这两个型号:
public class SiteSettingsViewModel { public decimal SubscriptionFee { get; set; } } public class SiteSettings { public decimal SubscriptionFee { get; set; } } 和代码: var model = Mapper.Map<SiteSettings,SiteSettingsViewModel>(settingService.GetSettings()); 这引发了以下错误:
为什么我需要输入代码: Mapper.CreateMap<SiteSettings,SiteSettingsViewModel>(); 对我来说,这似乎是我在编写猴子代码.这不是必需的. 为什么1号线不起作用? 解决方法
一个原因是它对于需要定义更具体行为的更复杂的映射方案很有用.例如(从
CodePlex):
Mapper.CreateMap<CalendarEvent,CalendarEventForm>() .ForMember(dest => dest.EventDate,opt => opt.MapFrom(src => src.EventDate.Date)) .ForMember(dest => dest.EventHour,opt => opt.MapFrom(src => src.EventDate.Hour)) .ForMember(dest => dest.EventMinute,opt => opt.MapFrom(src => src.EventDate.Minute)); 像你正在做的简单映射的另一个选择是制作一个通用映射器,为你处理CreateMap调用,如下所示: public interface IMapper<T1,T2> { T1 Map(T2 source); } public class Mapper<T1,T2> : IMapper<T1,T2> where T1 : class where T2 : class { public Mapper() { Mapper.CreateMap<T2,T1>(); } public T1 Map(T2 source) { return Mapper.Map<T2,T1>(source); } } 然后你可以直接实例化它们,如: var mapper = new Mapper<SiteSettings,SiteSettingsViewModel>(); 或者注册它们以注入您的控制器,或者您计划使用它们的任何其他地方.希望有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SignalR(.NET Core)中的JWT身份验证,而不在查询字符串中传递
- unit-testing – 对ActionFilter进行单元测试 – 正确设置A
- asp.net-mvc – delphi web服务从.net mvc应用程序获取不同
- asp.net-mvc – ASP.NET MVC DropDownListFor不支持SelectL
- asp.net-mvc-3 – 当不需要/需要使用AntiForgeryToken时?
- asp.net-mvc – ASP.NET MVC提醒我旧的经典ASP意大利面条代
- asp.net – 有没有更好的方法将ClientID转换为外部JS文件?
- asp.net-core – 为Microsoft.CodeAnalysis.Common检测到版
- asp.net-mvc – 优化性能或属性路由和路由表
- 在当前的HTTPContext中生成一个新的ASP.NET会话
推荐文章
站长推荐
热点阅读