定义一个条件值转换器,并在AutoMapper配置中指定该转换器。 例如,如果要根据源对象属性值中的长度来判断是否映射目标对象属性,则可以创建以下转换器:
public class StringLengthCondition : IMappingCondition { public bool IsSatisfied(object source, object destination, ResolutionContext context) { string sourceString = (string)source; if (sourceString.Length > 10) return true; else return false; } }
然后在AutoMapper配置中使用该转换器:
Mapper.Initialize(cfg =>
{
cfg.CreateMap()
.ForMember(dest => dest.SomeString, opt => opt.MapFrom(src => src.OtherString))
.ForMember(dest => dest.SomeInt, opt => opt.Condition(new StringLengthCondition()));
});
上面的代码指定了一个条件,即只有当源对象属性SomeString的长度大于10时,才进行映射。
使用AutoMapper的条件映射扩展方法。 AutoMapper提供了一些条件映射的扩展方法,可以根据条件来判断是否进行映射,例如
Mapper.Map
上面的代码指定了一个条件,即只有当源对象属性SomeString的长度大于10时,才进行映射。