2016-12-23 5 views
1

У меня есть версия ASP.NET версии 2.0 с VB.Net в конце, где я пытаюсь инициализировать Automapper в файле Global.asax. Здесь я использую Auto Mapper версии 5.2. Я могу инициализировать использование кода C#, но я не уверен в отношении VB.Net. После того, как я прибегая к помощи нашел something и вот что я хочу прямо сейчас:Как зарегистрировать Automapper в файле global.asax vb.net?

Module AutoMapperConfiguration 
Public MapperConfiguration As IMapper 
    Public Sub Configure() 
    Dim config = New MapperConfiguration(//in this line I'm getting an error: 

разрешение перегрузки не удалась, поскольку не доступны «Новый» можно назвать с этими аргументами: «Публичные Перегрузки Sub New (configurationExpression Как MapperConfigurationExpression) ': выражение Lambda не может быть преобразовано в' MapperConfigurationExpression ', потому что' MapperConfigurationExpression 'не является типом делегата.

   Sub(cfg) 
      cfg.AddProfile(New EntityMapProfile()) 
     End Sub) 
    MapperConfiguration = config.CreateMapper() 
End Sub 

End Module

Тогда я назвал этот модуль из Application_Start()

AutoMapperConfiguration.Configure() 

Но в последний раз я сделал это с помощью C# с помощью следующей строки кода в файле global.asax

Mapper.Initialize(x => 
    { 
     x.AddProfile<EntityMapProfile>(); 
    }); 

В соответствии с Приложением ion_Start(), который работал хорошо, но теперь, даже если я конвертирую эти выше строки кода, я все равно сталкиваюсь с проблемами. Я был бы признателен за вашу помощь или предложение по вышесказанному.

+0

Вы только что поставили вопрос? – DavidG

+0

Да, но извините за то, что мне не удалось получить этот пароль учетной записи, и что это новая учетная запись, поэтому я собираюсь закрыть эту тему. Я предполагаю, что никто не заметит, и мне действительно нужна помощь в этом срочно. Спасибо – barsan

+0

Я думаю, что он ожидает возвращаемого значения. Попробуйте 'Function' вместо' Sub' для вашей лямбды. – TyCobb

ответ

1

По какой-либо причине VB.NET не использует правильный конструктор, когда вы встраиваете Sub в действие.

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 

выше заставит вашу лямбду к правильному типу Action(Of IMapperConfigurationExpression) и тем самым заставить VB.NET использовать правильную перегрузку конструктора.

+0

Большое спасибо за подробное объяснение и хороший ответ. Это действительно спасло меня много времени. – barsan

+1

Нет проблем. Рад, что смог помочь. Это какая-то боль и неожиданность. – TyCobb

Смежные вопросы