epitka epitka - 1 year ago 105
C# Question

How to ignore all destination members, except the ones that are mapped?

Is there a way to do this? We have a SummaryDto that maps from three different types, and when we create a map for each type, props that are not mapped are throwing an error. There are about 35 attributes on the summary dto. To use Ignore() option on each one is just too much trouble. Is there a global ignore? Something like


Answer Source

This is working for me:

public static class MappingExpressionExtensions
    public static IMappingExpression<TSource, TDest> IgnoreAllUnmapped<TSource, TDest>(this IMappingExpression<TSource, TDest> expression)
        expression.ForAllMembers(opt => opt.Ignore());
        return expression;

Because ForAllMembers returns void, calling ForAllMembers(o => o.Ignore()) without this extension method wouldn't work. We want to keep the mapping expression available to enable the subsequent mappings:

CreateMap<Source, Destination>()
            .ForMember(d => d.Text, o => o.MapFrom(s => s.Name))
            .ForMember(d => d.Value, o => o.MapFrom(s => s.Id));
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download