如何将Automapper注册到vb.net global.asax文件中?

时间:2016-12-23 22:02:08

标签: asp.net asp.net-mvc vb.net

我在后端使用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()下运行良好,但现在即使我转换上面的代码行,我仍然面临着问题。我将非常感谢您对上述内容的帮助或建议。

1 个答案:

答案 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使用正确的构造函数重载。