9

我正在使用 vb.net 中的泛型类。
如果不指定类型,扩展方法似乎不能应用于泛型类。

我有这个通用类

Public Class MyGeneric(Of T)
    'Methods and properties go here 
    '
    '
End Class  

还行吧

<Extension()> _
Public Sub DoSomething(ByVal myGenericDoubleObj As MyGen(Of Double))

End Sub  

这不好(IDE 给了我未定义的错误 T。)

<Extension()> _
Public Sub DoSomethingGeneric(ByVal myGenericObj As MyGen(Of T))

End Sub

这与.Net的静态检查有关吗?
对我说“你可以尝试用 Type T 做的事情可能不兼容,我不会允许你这样做。”

PS 作为通用类,我所承受的所有这些痛苦都来自另一个库,并在许多不同的地方使用。我对在我继承的泛型类中继承和添加这个方法有点警惕。

4

1 回答 1

15

如果您使扩展方法成为通用方法,它应该可以工作

即 DoSomething (Of​​ T) () instread 只是 DoSomething()

<Extension()> _
Public Sub DoSomething(Of T)(ByVal myGenericObj As MyGeneric(Of T))
End Sub

希望这可以帮助

于 2008-12-08T10:27:23.853 回答