我有一个相当大的对象,有很多属性。
我正在使用Automapper从网格映射到属性。
只需要映射一些属性,其余属性必须被忽略,因为它们以后不用于映射
有没有办法'忽略'所有这些属性,或者我是否需要为每个属性编写一个明确的'忽略' - 请参阅下面的代码。我希望能够'.IgnoreAllNotUsed'而不是一个一个地忽略。这可能吗?
该类继承自另一个类,但大多数属性都在实际的类本身上 link to picture of code
答案 0 :(得分:6)
只需忽略所有属性,然后指定ForMember。这是一个例子:
var mapping = Mapper.CreateMap<Source, Destination>();
mapping.ForAllMembers(opt=>opt.Ignore());
mapping.ForMember(...)
.ForMember(...);
答案 1 :(得分:3)
您可以使用此扩展方法:
public static void ForAllUnmappedMembers<TSource, TDestination>(
this IMappingExpression<TSource, TDestination> mapping,
Action<IMemberConfigurationExpression<TSource>> memberOptions)
{
var typeMap = Mapper.FindTypeMapFor<TSource, TDestination>();
foreach(var memberName in typeMap.GetUnmappedPropertyNames())
mapping.ForMember(memberName, memberOptions);
}
像这样使用:
Mapper.CreateMap<Source, Destination>()
.ForMember(...)
.ForAllUnmappedMembers(o => o.Ignore());
我没有测试过,但应该可以使用。