将Extension方法应用于具有泛型类型的泛型类

时间:2008-12-08 10:11:56

标签: .net vb.net generics static-typing

我正在使用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型做的事可能不兼容,我不允许你这样做。”

P.S。我作为通用类所带来的所有痛苦来自另一个库,并在许多不同的地方使用。我很遗憾在继承的泛型类中继承和添加此方法。

1 个答案:

答案 0 :(得分:16)

如果您将扩展方法设为通用方法,则应该可以使用

即DoSomething (Of T)()只读DoSomething()的实例

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

希望这有帮助