Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: JayОтветов: 2

У меня есть выражение 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

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

Ответы

Ответ 1 · рейтинг 2 · Swaraj

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

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

ХТН

Ответ 2 · Andrew Beal

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы