【发布时间】: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