Преобразование кода установки MOQ в vb.net из С#

У меня есть выражение og MOQ (лямбда/linq) в С#. При попытке преобразовать и использовать этот код в vb.net я получаю сообщение об ошибке

Код C#

_dataLayerMock.Setup(x => x.SaveAccount(It.Is<Account>(a => a.AccountType == AccountType.Private)));  

Преобразованный код VB.net

_dataLayerMock.Setup(Function(x) x.SaveAccount(It.[Is](Of Account)(Function(a) a.AccountType = AccountType.[Private])))

Ошибка

Error   1   Overload resolution failed because no accessible 'Setup' can be called with these arguments:
    'Public Function Setup(Of TResult)(expression As System.Linq.Expressions.Expression(Of System.Func(Of ConsoleApplication1.IDataLayer, TResult))) As Moq.Language.Flow.ISetup(Of ConsoleApplication1.IDataLayer, TResult)': Expression does not produce a value.
    'Public Function Setup(Of TResult)(expression As System.Linq.Expressions.Expression(Of System.Func(Of ConsoleApplication1.IDataLayer, TResult))) As Moq.Language.Flow.ISetup(Of ConsoleApplication1.IDataLayer, TResult)': Data type(s) of the type parameter(s) cannot be inferred from these arguments. Specifying the data type(s) explicitly might correct this error.
    'Public Function Setup(expression As System.Linq.Expressions.Expression(Of System.Action(Of ConsoleApplication1.IDataLayer))) As Moq.Language.Flow.ISetup(Of ConsoleApplication1.IDataLayer)': Expression does not produce a value. D:\Araamudhan\Project\Amex\Maven-NPanday\Application\ClassLibrary\LinqTest\LinqTest\BusinessLayerTest.vb    20  9   LinqTest

Может ли кто-нибудь помочь мне, как решить это


person Jay    schedule 16.03.2012    source источник


Ответы (2)


Используйте один из конвертеров кода — они отлично подходят для этих случаев. http://converter.telerik.com/

_dataLayerMock.Setup(Function(x) x.SaveAccount(It.[Is](Function(a) a.AccountType = AccountType.[Private])))

ХТН

person Swaraj    schedule 16.03.2012
comment
Получение той же ошибки. Этот конвертер также дает мне тот же код. - person Jay; 16.03.2012
comment
Пожалуйста, проверьте свой код, правильно ли вы передаете параметр для метода установки. Не слишком хорошо знаком с MOQ. С предоставленной информацией похоже, что вы вызываете метод при настройке ... Разрешение перегрузки не удалось, поскольку с этими аргументами нельзя вызвать доступную «Установку». - person Swaraj; 16.03.2012

Вероятно, вам больше не нужен этот ответ, но на случай, если кто-то еще столкнется с этим вопросом.

Я считаю, что это не работает в VB.net, потому что лямбда-выражения должны возвращать значение в vb и поэтому не позволят вам издеваться над подметодом в VB.

Надеюсь это поможет

person Andrew Beal    schedule 13.11.2012