在使用AutomapperMap某些元素时,我有一个独特的要求。
我没有找到任何有效的解决方案与构建的场景:
1.如果电话号码不为空,我想将电话号码详细信息添加到联系人列表
1.如果电子邮件不为空,我想将电子邮件地址详细信息添加到联系人列表
CreateMap<UserModel, UserDefinition>()
.ForMember(d => d.Id, o => o.Ignore())
.ForMember(d => d.UserName, o => o.MapFrom(s => s.Username))
.ForMember(d => d.Contacts, o =>
new List<UserContactDefinition>()
{
o.MapFrom(s => !string.IsNullOrWhiteSpace(s.PhoneNumber) ?
new UserContactDefinition
{
Type = ContactType.Phone,
IsPrimary = true,
Label = s.PhoneType,
Value = s.PhoneNumber
}: null,
o.MapFrom(s => !string.IsNullOrWhiteSpace(s.ContactEmail) ?
new UserContactDefinition
{
Type = ContactType.Email,
IsPrimary = true,
Label = s.EmailType,
Value = s.Email
}: null
}
);
这段代码不起作用,如果没有值,我不想添加空元素。
有线索吗?
1条答案
按热度按时间thtygnil1#
在您的案例中,您需要Custom Value Resolver来Map
Contacts
属性的目的成员。1.实作
UserContactDefinitionListResolver
自订值解析程式。1.为成员
Contacts
添加Map配置/概要文件以使用UserContactDefinitionListResolver
。Demo @ .NET Fiddle