2

我有一个相当大的对象,有很多属性。

我正在使用 Automapper 映射到网格中的属性。

只有少数属性需要映射,其余的必须忽略,因为它们稍后会使用,而不是在映射时使用

有没有办法“忽略”所有这些属性,或者我需要为每个属性写一个明确的“忽略” - 请参见下面的代码。我希望能够'.IgnoreAllNotUsed' 而不必一一忽略。这可能吗?

该类继承自另一个类,但大多数属性都在实际类本身上 链接到代码图片 在此处输入图像描述

在此处输入图像描述

4

2 回答 2

8

只需忽略所有属性,然后指定 ForMember。这是示例:

var mapping = Mapper.CreateMap<Source, Destination>();
mapping.ForAllMembers(opt=>opt.Ignore());
mapping.ForMember(...)
       .ForMember(...);
于 2012-09-06T16:11:18.873 回答
4

您可以使用此扩展方法:

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());

我没有测试过它,但它应该可以工作。

于 2012-09-06T05:45:26.403 回答