c# - 如何在 CreateMap 中使用 Automapper IMemberValueResolver 自定义解析器?
问题描述
我正在尝试将一个对象的成员从一个短的?使用 AutoMapper CreateMap.. 使用解析器接口。
我创建了一个 IMemberValueResolver 接口,使用 resolve 函数对接口进行类,然后尝试将 CreateMap 与 opt.MapFrom 和 opt.ResolveUsing 一起使用 - 没有任何效果..
接口和类编译没有错误,但只有 CreateMap 有错误。
尝试了以下文档:http :
//docs.automapper.org/en/stable/Custom-value-resolvers.html http://docs.automapper.org/en/stable/5.0-Upgrade-Guide.html
现在找了 2 天,尝试了我能找到的一切,没有任何效果.. :(
这就是我现在所拥有的。。
接口(IMemberValueResolver.cs):
public interface IMemberValueResolver<in TSource, in TDestination, TSourceMember, TMember>
{
TMember Resolve(TSource source, TDestination destination, TSourceMember sourceMember, TMember destinationMember, ResolutionContext context);
}
映射器配置(AutoMapperConfig.cs):
public class IsBootstrapResolver : IMemberValueResolver<PageTemplateDataContract, PageTemplateViewModel, short?, bool>
{
public bool Resolve(PageTemplateDataContract source, PageTemplateViewModel destination, short? sourceMember, bool destMember, ResolutionContext context)
{
return sourceMember == 1 ? true : false;
}
}
//NONE OF THESE WORK!!!!!
public class DataContractToViewModelProfile : Profile
{
public DataContractToViewModelProfile()
{
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.ResolveUsing<IsBootstrapResolver>().FromMember(x => x.IsBootstrapEnable));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.ResolveUsing(IsBootstrapResolver));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.MapFrom<IsBootstrapResolver, short?>(!?!?!?!));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.MapFrom(new IsBootstrapResolver()));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.ResolveUsing<IsBootstrapResolver>().FromMember(x => x.IsBootstrapEnable));
CreateMap<PageTemplateDataContract, PageTemplateViewModel>().ForMember(dest => dest.IsBootstrapEnable, opt => opt.ResolveUsing<IsBootstrapResolver, bool>(src => src.IsBootstrapEnable));
}
}
我期待用短映射的对象?使用自定义解析器将其转换为布尔值。
谢谢!
解决方案
推荐阅读
- r - 如何在 DTM 中搜索特定术语
- php - 将主题标签转换为网址
- aws-lambda - 当数据来自 IoT Core 规则时,如何在 AWS Lambda 中获取客户端的 IP 地址?
- mstest - MSTest vS StructureMap:某些间接引用的 dll 不会被结构映射扫描,即使它们确实存在于磁盘上
- python - 寻找像素簇和绘制bbox最有效的算法是什么
- javascript - 如何处理调用浏览器还没有的代码的 SJR 响应?
- javascript - 如果数组为空则禁用按钮并在添加项目时启用?
- javascript - jQuery:用于延迟 removeClass() 的脚本延迟太久
- xamarin - Xamarin 表单,PDF 显示在 iOS 模拟器上,但不在真正的 iPad 上
- c++ - 在 Yocto 中使用 Cmake 构建 Qt5