我在后端使用VB.Net的ASP.NET API版本2.0,我试图在Global.asax文件中初始化Automapper。在这里,我使用Auto Mapper 5.2版。我可以使用C#代码初始化,但我对VB.Net不太确定。谷歌搜索后我发现something,这就是我现在正在尝试的:
Module AutoMapperConfiguration
Public MapperConfiguration As IMapper
Public Sub Configure()
Dim config = New MapperConfiguration(//in this line I'm getting an error:
重载解析失败,因为无法访问'新'可以使用以下参数调用:' Public Overloads Sub New(configurationExpression As MapperConfigurationExpression)&#39 ;: Lambda表达式无法转换为' MapperConfigurationExpression'因为' MapperConfigurationExpression'不是代表类型。
Sub(cfg)
cfg.AddProfile(New EntityMapProfile())
End Sub)
MapperConfiguration = config.CreateMapper()
End Sub
结束模块
然后我从Application_Start()
中调用了这个模块 AutoMapperConfiguration.Configure()
但是上次我使用C#在global.asax文件中使用以下代码行完成了这项工作
Mapper.Initialize(x =>
{
x.AddProfile<EntityMapProfile>();
});
在Application_Start()下运行良好,但现在即使我转换上面的代码行,我仍然面临着问题。我将非常感谢您对上述内容的帮助或建议。
答案 0 :(得分:2)
无论出于何种原因,当您为Action操作Sub
内联时,VB.NET没有使用正确的构造函数。
Module AutoMapperConfiguration
Public MapperConfiguration As IMapper
Public Sub Configure()
Dim configAction As Action(Of IMapperConfigurationExpression) = Sub(cfg) cfg.AddProfile(Of EntityMapProfile)()
Dim config = New MapperConfiguration(configAction)
MapperConfiguration = config
End Sub
End Module
上面将强制你的lambda到正确的Action(Of IMapperConfigurationExpression)
类型,从而迫使VB.NET使用正确的构造函数重载。