在扩展方法中,Datarow的项目未视为整数,但异常意味着将其视为整数

时间:2018-07-03 19:03:05

标签: vb.net extension-methods

我在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

我宁愿称其为前者。我知道可以将值保存到变量中,然后对该变量调用扩展名,但这似乎是不必要的额外步骤。

有什么方法可以使前一种方法起作用,而无需每次我都需要添加额外的变量分配,或者更改扩展方法以在Objects上起作用?

0 个答案:

没有答案