场景如下:
源对象:
public class personSrc
{
public string name {get; set;}
public string phone {get; set;}
public string HomeAddress {get; set;}
public string OfficeAddress {get; set;}
}
目标对象:
public class personDest
{
public string name {get; set;}
public string phone {get; set}
public List<address> addresses {get; set;}
}
public class address
{
public string location {get; set;}
public addressType type {get; set;}
}
public enum addressType {Office, Home}
因此,为了将地址成员从源映射到目的地,我制作了这个自定义解析器:
public class CustomResolver : IValueResolver<personSrc, personDest, List<address>>
{
public List<address> Resolve(personSrc source, personDest destination, List<address> destMember, ResolutionContext context)
{
List<address> result = new List<adress>();
if(!String.IsNullOrEmpty(source.HomeAddress))
{
result.add(new Address{
location = source.HomeAddress,
type = addressType.Home
});
}
if(!String.IsNullOrEmpty(source.OfficeAddress))
{
result.add(new Address{
location = source.OfficeAddress,
type = addressType.Office
});
}
return result;
}
}
我面临的问题是,当我定义我这样写的探查器时,我似乎无法通过 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) // this line is not working
.ForMember(dest => dest.addresses, opt => opt.MapFrom<customResolver>() // this line is also not working
我的个人资料很可能没有正确实施,但我似乎找不到正确实施的示例。