我在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上起作用?