我有一个相当大的对象,有很多属性。
我正在使用 Automapper 映射到网格中的属性。
只有少数属性需要映射,其余的必须忽略,因为它们稍后会使用,而不是在映射时使用
有没有办法“忽略”所有这些属性,或者我需要为每个属性写一个明确的“忽略” - 请参见下面的代码。我希望能够'.IgnoreAllNotUsed' 而不必一一忽略。这可能吗?
该类继承自另一个类,但大多数属性都在实际类本身上 链接到代码图片
我有一个相当大的对象,有很多属性。
我正在使用 Automapper 映射到网格中的属性。
只有少数属性需要映射,其余的必须忽略,因为它们稍后会使用,而不是在映射时使用
有没有办法“忽略”所有这些属性,或者我需要为每个属性写一个明确的“忽略” - 请参见下面的代码。我希望能够'.IgnoreAllNotUsed' 而不必一一忽略。这可能吗?
该类继承自另一个类,但大多数属性都在实际类本身上 链接到代码图片
只需忽略所有属性,然后指定 ForMember。这是示例:
var mapping = Mapper.CreateMap<Source, Destination>();
mapping.ForAllMembers(opt=>opt.Ignore());
mapping.ForMember(...)
.ForMember(...);
您可以使用此扩展方法:
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());
我没有测试过它,但它应该可以工作。