2017-08-17 1 views
1

J'essaie de mettre à jour notre code d'aotumapper v3 vers v6 et d'avoir des problèmes avec une méthode d'assistance qui utilise IMemberConfigurationExpression.IMemberConfigurationExpression échouant lors de la mise à niveau d'AutoMapper de v3 à v6

private void TreatEmptyStringsAsNull<TSource>(IMemberConfigurationExpression<TSource> expression) 
    { 

     expression.Condition(ctx => ctx.SourceType != typeof(string) || (string)ctx.SourceValue != string.Empty); 
    } 

Et cette méthode est appelée par:. config.CreateMap() ForAllMembers (TreatEmptyStringsAsNull);

Le message d'erreur que j'ai reçu est que « à l'aide IMemberConfigurationExpression de type générique nécessite trois arguments

Ma tentative de solution.

private void TreatEmptyStringsAsNull<TSource, TDestination, TMember>(IMemberConfigurationExpression<TSource, TDestination, TMember> expression) 
    { 

     expression.Condition(ctx => ctx.SourceType != typeof(string) || (string)ctx.SourceValue != string.Empty); 
    } 

Mais je suis une nouvelle erreur » TSource ne contient pas de définition 'SourceType' et aucune méthode d'extension 'SourceType' acceptant un premier argument de type 'TSource' n'a pu être trouvé. "

Comment mettre à jour cette méthode d'aide pour la faire fonctionner?

#update: Je ne les modifications suivantes qui ne provoque plus une erreur:

private static void TreatEmptyStringsAsNull<TSource, TDestination, TMember>(IMemberConfigurationExpression<TSource,TDestination, TMember> expression) 
    { 
     expression.Condition(ctx => ctx.GetType() != typeof(string) || ctx.ToString() != string.Empty); 
    } 

Répondre

1
private static void TreatEmptyStringsAsNull<TSource, TDestination, TMember>(IMemberConfigurationExpression<TSource,TDestination, TMember> expression) 
{ 
    expression.Condition(ctx => ctx.GetType() != typeof(string) || ctx.ToString() != string.Empty); 
} 

Cela a fonctionné.