我试图使用AutoMapper从属性名称前有前缀的类中获取数据,并将其映射到没有这些前缀的第二个类。但是,我不一定要总是去掉那个前缀:我只是希望它为这个特定的映射做它。AutoMapper无法识别配置文件特定的前缀
我的源类看起来是这样的:
public class AdvancedSearchFilterDataModel
{
// ....
public string ServiceMeterNumber { get; set; }
// ....
}
我的目标类看起来是这样的:
[DataContract]
public class ServicesAdvancedSearchFilterData : AdvancedSearchFilterData
{
// ....
[DataMember]
public string MeterNumber { get; set; }
// ....
}
当我尝试映射这样的价值观,它的工作原理:
Mapper.Configuration.RecognizePrefixes("Service");
Mapper.CreateMap<AdvancedSearchFilterDataModel, ServicesAdvancedSearchFilterData>();
ServicesAdvancedSearchFilterData servciesFilterData =
Mapper.Map<ServicesAdvancedSearchFilterData>(model);
但我只希望“服务”被识别为某些映射的前缀,因为它也被用作prope的正常部分rty名称在其他映射中。我试图用一个配置文件来处理这个问题,但并没有工作 - 没有数据被映射:
Mapper.CreateProfile("ServicePrefix").RecognizePrefixes("Service");
Mapper.CreateMap<AdvancedSearchFilterDataModel, ServicesAdvancedSearchFilterData>()
.WithProfile("ServicePrefix");
ServicesAdvancedSearchFilterData servciesFilterData =
Mapper.Map<ServicesAdvancedSearchFilterData>(model);
我怎样才能使它识别前缀,只有当我想要它,或者使用配置文件或其他一些技术? (我也有,我要去给需要它认识到以同样的方式其他映射其他前缀。)
谢谢。我最终以不同的方式实现了这一点,所以我无法对此进行测试,并亲自验证它是否有效,但我会暂时将其标记为“正确”,并希望对下一个人有帮助谁遇到了这个。 – JJS
在我的愚见中,我发现这个解决方案达到了复杂性的关键点。我会手动做。 –
@JJS你能分享一下你实现它的不同方式吗? – xr280xr