Bu, hedefte var olmayan tüm özellikleri yok sayan bir uzantı yöntemidir. Sorunun iki yıldan daha eski olduğu için hala yararlı olup olmayacağından emin değilim, ancak aynı sorunu çok sayıda manuel Yoksay çağrısı eklemek zorunda kaldım.
public static IMappingExpression<TSource, TDestination> IgnoreAllNonExisting<TSource, TDestination>
(this IMappingExpression<TSource, TDestination> expression)
{
var flags = BindingFlags.Public | BindingFlags.Instance;
var sourceType = typeof (TSource);
var destinationProperties = typeof (TDestination).GetProperties(flags);
foreach (var property in destinationProperties)
{
if (sourceType.GetProperty(property.Name, flags) == null)
{
expression.ForMember(property.Name, opt => opt.Ignore());
}
}
return expression;
}
Kullanımı:
Mapper.CreateMap<SourceType, DestinationType>()
.IgnoreAllNonExisting();
GÜNCELLEME : Görünüşe göre, bunların üzerine yazdığı için özel eşlemeleriniz varsa doğru şekilde çalışmaz. Önce IgnoreAllNonExisting ve daha sonra özel eşlemeler çağırırsanız yine de işe yarayabilir sanırım.
schdr, Mapper.GetAllTypeMaps()
hangi özelliklerin eşlenmemiş olduğunu bulmak ve bunları otomatik olarak yoksaymak için kullanılan bir çözüme (bu sorunun cevabı olarak) sahiptir . Bana daha sağlam bir çözüm gibi görünüyor.