将AutoMapper从v3升级到v6时,IMemberConfigurationExpression失败

时间:2017-08-17 19:44:20

标签: c# .net automapper

我正在尝试将我们的代码从aotumapper v3更新到v6,并且遇到使用IMemberConfigurationExpression的一个帮助器方法时遇到问题。

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

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

这个方法被调用: 。config.CreateMap()ForAllMembers(TreatEmptyStringsAsNull);

我收到的错误消息是“使用泛型类型IMemberConfigurationExpression需要三个参数。

我的尝试修复:

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

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

但后来我收到一个新错误“TSource不包含'SourceType'的定义,并且没有扩展方法'SourceType'接受类型'TSource'的第一个参数。”

如何更新此辅助方法以使其正常工作?

#UPDATE: 我做了以下更改,不再导致任何错误:

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

1 个答案:

答案 0 :(得分:1)

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

这很有用。