【问题标题】:Automapper upgrade woes...does not exist in the typeAutomapper 升级问题...类型中不存在
【发布时间】:2021-04-26 15:19:27
【问题描述】:

我最近从旧版本的 Automapper 进行了一次相当大的升级。

升级引起了很多麻烦,但 Automapper 升级指南帮助很大 (https://docs.automapper.org/en/stable/8.0-Upgrade-Guide.html)。

我正在处理的最后一个问题是:

我改变了这个:

cfg.CreateMap<String, String>()
    .ConvertUsing(Conversion.TrimToNull);
    

到这里:

cfg.CreateMap<String, String>()
    .ConvertUsing(new Conversion.TrimToNull);

使用一个名为 Conversion 的类,如下所示:

public static class Conversion
{
    public static String TrimToNull(this String str)
    {
        return str?.Trim().Coalesce(null);
    }
}

但现在我收到此错误:

The name 'TrimToNull' does not exist in the type Conversion

我不知道为什么它看不到TrimToNull,即使它在课堂上。

我可能做错了什么。它适用于旧版本的 Automapper。

谢谢!

【问题讨论】:

  • 为什么要加“new”? Conversion.TrimToNull 不是一个类。你不能分配一个方法。
  • 转换是一个静态类。你不会在它上面调用新的。因此,您要么需要删除 static 关键字,要么需要删除 new 关键字。它们有点相互排斥。
  • @madreflection 啊,是的。几乎看起来他们正在尝试使用委托。我对自动映射器一无所知,但我可以推断 ConvertUsing 期待一个 Func 或委托,然后调用 TrimToNull 函数。
  • @B.O.B.谢谢,我尝试将其更改为 .ConvertUsing(Conversion.TrimToNull); 并得到 cannot convert from method group to Type 所以我不知道如何让它识别它

标签: c# automapper typeconverter


【解决方案1】:

查看自动映射器指南,似乎他们将签名从 Func 更改为 Expression>。 Auto Mapper Convert Using Update

我相信出于这个原因你想要:

cfg.CreateMap&lt;String, String&gt;().ConvertUsing(x =&gt; Conversion.TrimToNull(x));

【讨论】:

  • 您好,我试过了,我收到一个新错误,上面写着Cannot convert lambda expression to type 'Type' because it is not a delegate type
  • 表达式缺少参数:x =&gt; Conversion.TrimToNull(x)
猜你喜欢
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 2023-02-06
  • 2017-01-24
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
相关资源
最近更新 更多