Skip to content

Instantly share code, notes, and snippets.

@kradcliffe
Created February 28, 2012 12:28
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kradcliffe/1932255 to your computer and use it in GitHub Desktop.
Save kradcliffe/1932255 to your computer and use it in GitHub Desktop.
Automapper extension to IGNORE unmapped properties for a given type
public static class AutoMapperExtensions
{
public static IMappingExpression<TSource, TDestination>
IgnoreAllNonExisting<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
var sourceType = typeof(TSource);
var destinationType = typeof(TDestination);
var existingMaps = Mapper.GetAllTypeMaps().First(x => x.SourceType.Equals(sourceType) && x.DestinationType.Equals(destinationType));
foreach (var property in existingMaps.GetUnmappedPropertyNames())
{
expression.ForMember(property, opt => opt.Ignore());
}
return expression;
}
}
// USAGE:
Mapper.CreateMap<SourceType, DestinationType>()
.ForMember(prop => x.Property, opt => opt.MapFrom(src => src.OtherProperty))
.IgnoreAllNonExisting();
@kradcliffe
Copy link
Author

FROM schdr on stackoverflow. From this answer: http://stackoverflow.com/a/6474397/12706

@jadav1982
Copy link

How can i ignore as per below.

public class User
{
public string FirstName{get;set;}
public string LastName{get;set;}
public string EmailAddress{get;set;}
public virtual Employer Employer { get; set; }

}
public class Employer
{
public int EmployerId { get; set; }
public int UserID { get; set; }
public string EmployerName { get; set; }
public string EmployerPhone { get; set; }
public virtual User User { get; set; }
}

How to ignore EmployerId in auto mapping?

@dotcom9
Copy link

dotcom9 commented Aug 6, 2013

This is a very useful extension for working with types with many properties. Unfortunately, it doesn't work with types that inherit from a base class (line 11 throws a NullReferenceException). One workaround is to provide explicit mappings or ignores for base class properties.

@xts-velkumars
Copy link

Above extension is not working with Automapper 5.0.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment