Ignorer les valeurs nulles avec un résolveur personnalisé

Je veux utiliser automapper à la carte entre mes données publiques des contrats et ma DB modèles. J'ai créé une classe qui va automatiquement par le biais de tous les contrats sont crée des mappages. Le seul problème que j'ai c'est que je ne veux que les valeurs de la carte du contrat à la DB modèle si la valeur n'est pas null. J'ai regardé d'autres question ici, mais ne peux pas le voir exemples d'utilisation des outils de résolution personnalisés.

Ici est une partie de mon code

var mapToTarget = AutoMapper.Mapper.CreateMap(contract, mappedTo);
foreach (var property in contract.GetProperties().Where(property => property.CustomAttributes.Any(a => a.AttributeType == typeof(MapsToProperty))))
{
  var attribute = property.GetCustomAttributes(typeof(MapsToProperty), true).FirstOrDefault() as MapsToProperty;

  if (attribute == null) continue;

  mapToTarget.ForMember(attribute.MappedToName,
                    opt => 
                        opt.ResolveUsing<ContractToSourceResolver>()
                            .ConstructedBy(() => new ContractToSourceResolver(new MapsToProperty(property.Name, attribute.SourceToContractMethod, attribute.ContractToSourceMethod))));
}


private class ContractToSourceResolver : ValueResolver<IDataContract, object>
{
  private MapsToProperty Property { get; set; }

  public ContractToSourceResolver(MapsToProperty property)
  {
     Property = property;
  }

  protected override object ResolveCore(IDataContract contract)
  {
     object result = null;
     if (Property.ContractToSourceMethod != null)
     {
         var method = contract.GetType()
                    .GetMethod(Property.ContractToSourceMethod, BindingFlags.Public | BindingFlags.Static);
          result = method != null ? method.Invoke(null, new object[] {contract}) : null;
      }
      else
      {
         var property =
                    contract.GetType().GetProperties().FirstOrDefault(p => p.Name == Property.MappedToName);
         if (property != null)
         {
             result = property.GetValue(contract);
         }
      }

      return result;
   }
}

Et c'est de cette façon que je veux l'utiliser

AutoMapper.Mapper.Map(dataContract, dbModel)

Actuellement, cela fonctionne très bien mais si il y a une valeur NULL dans la dataContract puis il va remplacer la valeur existante dans la dbModel, ce n'est pas ce que je veux. Comment puis-je faire AutoMapper ignorer null valeurs de la source?

MODIFIER

Comme l'a souligné dans l'une des réponses est-ce

Mapper.CreateMap<SourceType, DestinationType>().ForAllMembers(opt => opt.Condition(srs => !srs.IsSourceValueNull));

Ce serait l'idéal, sauf pour le fait que .ForAllMembers n'est pas accessible à partir de

Mapper.CreateMap(SourceType, DestinationType)

source d'informationauteur Mike Norgate | 2013-11-16