我正在使用 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 的静态检查有关。
对我说“你尝试用 T 型做的事情可能不兼容,我不会允许你这样做。”
附注我作为通用类所承受的所有痛苦都来自另一个库,并在许多不同的地方使用。我对在继承的泛型类中继承和添加此方法不太谨慎。
最佳答案
如果您将扩展方法设为通用方法,它应该可以工作
即 DoSomething (Of T) () 而不是 DoSomething()
<Extension()> _
Public Sub DoSomething(Of T)(ByVal myGenericObj As MyGeneric(Of T))
End Sub
希望这有帮助
关于.net - 将扩展方法应用于具有泛型类型的泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/349064/