2012-03-16 2 views
1

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

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 

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

ответ

2

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

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

НТН

+0

Великого ответа, преобразователь кода только то, что нужно :-) –

+0

Получению ту же ошибке. Этот конвертер также дает мне тот же код. – Jay

+0

Пожалуйста, проверьте свой код, передаете ли вы правильный параметр для метода установки. Не слишком хорошо знакомы с MOQ, с предоставленной информацией, похоже, что вы вызываете метод при настройке ... «Ошибка перегрузки завершилась неудачно, потому что с помощью этих аргументов нельзя вызвать« Setup », – Swaraj

0

Вы, наверное, не нужно это ответил больше, но в случае, если кто-то приходит через этот вопрос.

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

Надеется, что это помогает

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