Элементы Datarow не рассматриваются как целые числа в методе расширения, но исключение подразумевает, что они обрабатываются как целое число - PullRequest
0 голосов
/ 03 июля 2018

Я реализовал метод расширения для Integer (это упрощенный пример, который также показывает ошибку)

<Extension()>
Public Function IsPositive(ByVal item As Integer) As Boolean
    Return item > 0
End Function

Затем я пытаюсь вызвать метод расширения для элемента данных:

Dim dtMyTable As DataTable
dtMyTable = GetInfoFromDatabase()
If dtMyTable.Rows(0).Item("nCount").IsPositive() Then

Это дает мне исключение:

Public member 'IsPostive' on type 'Integer' not found.

Я предполагаю, что это потому, что dtMyTable.Rows (0) .Item ("nCount") на самом деле является объектом, а не целым числом. Кажется, исключение понимает, что это не так, поэтому я не уверен, почему это не так, но это так.

Однако, если я пытаюсь вызвать тот же метод, как если бы это был обычный метод, он работает без жалоб

If IsPositive(dtMyTable.Rows(0).Item("nCount")) Then

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

Есть ли способ заставить прежний метод работать без добавления дополнительного присваивания переменной каждый раз, когда мне нужно его вызывать, или изменения метода расширения для работы с объектами?

...