场景如下:
源对象:
公共类 personSrc
{
公共字符串名称 {get; 放;}
公共字符串电话{get; 放;}
公共字符串 HomeAddress {get; 放;}
公共字符串 OfficeAddress {get; 放;}
}
目标对象:
公共课 personDest
{
公共字符串名称 {get; 放;}
公共字符串电话{get; 放}
公共列表<地址> 地址 {get; 放;}
}
公开课地址
{
公共字符串位置 {get; 放;}
公共地址类型类型 {get; 放;}
}
公共枚举地址类型 {办公室,家庭}
所以为了将地址成员从源映射到目标,我制作了这个自定义解析器:
公共类 CustomResolver : IValueResolver<personSrc, personDest, List<address>>
{
public List<address> Resolve(personSrc source, personDest destination, List<address> destMember, ResolutionContext context)
{
列表<地址> 结果 = 新列表<地址>();
if(!String.IsNullOrEmpty(source.HomeAddress))
{
结果.add(新地址{
位置 = source.HomeAddress,
类型 = addressType.Home
});
}
if(!String.IsNullOrEmpty(source.OfficeAddress))
{
结果.add(新地址{
位置 = source.OfficeAddress,
类型 = addressType.Office
});
}
返回结果;
}
}
我面临的问题是,当我定义我这样编写的探查器时,我似乎无法通过 personSrc 类:
CreateMap<personSrc, personDest>()
.ForMember(dest => dest.name, opt => opt.MapFrom(src => src.name))
.ForMember(dest => dest.phone, opt => opt.MapFrom(src => src.phone))
.ForMember(dest => dest.addresses, opt => opt.MapFrom<customResolver>(src => src) // 这行不工作
.ForMember(dest => dest.addresses, opt => opt.MapFrom<customResolver>() // 这行也不行
很可能我的个人资料没有正确实施,但是我似乎找不到正确实施的示例。