Преобразование функции в VB из csharp - PullRequest
0 голосов
/ 26 октября 2018

Я преобразовал этот код с помощью converter.telerik.com

С

public Decimal CartTotal()
{
   return this.Items.Sum<CartItem>((Func<CartItem, Decimal>) (x => x.Total));
}

К

Public Function CartTotal() As Decimal
   Return Me.Items.Sum(Of CartItem)(CType((Function(x) x.Total), Func(Of CartItem, Decimal)))
End Function 

но компилятор говорит

Не удалось разрешить перегрузку, поскольку ни одна доступная 'Sum' не принимает это число аргументов типа.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вам просто нужно сбросить общий спецификатор на 'Sum':

Public Function CartTotal() As Decimal
   Return Me.Items.Sum(CType(Function(x) x.Total, Func(Of CartItem, Decimal)))
End Function

Точно, почему у VB есть проблема с этим, которая ускользает от меня на данный момент, но это общая проблема. Как правило, эта проблема влияет на использование любого из методов расширения IEnumerable.

0 голосов
/ 26 октября 2018

Это вопрос о том, что должно быть, или о преобразователе Telerik?Если последнее, то вы, вероятно, захотите обсудить это с Telerik ...

Если первое, то, возможно,

Return (from item as CartItem in items Select item.Total).Sum()

.NET Fiddle

...