使用automapper忽略未使用的属性

时间:2012-09-06 05:19:15

标签: c# visual-studio-2010 automapper

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

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

只需要映射一些属性,其余属性必须被忽略,因为它们以后不用于映射

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

该类继承自另一个类,但大多数属性都在实际的类本身上 link to picture of code enter image description here

enter image description here

2 个答案:

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

我没有测试过,但应该可以使用。