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

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的静态检查有关吗?
告诉我“你试图对类型T执行的某些操作可能不兼容,我将不允许你这样做。”

P.S. 所有这些痛苦都是由另一个库中的泛型类引起的,并在许多不同的地方使用。我有点担心继承并将此方法添加到我的继承泛型类中。


1
+1 就是我想要的。 - Magnus Lindhe
1个回答

15
如果你将扩展方法作为泛型方法,它应该能工作,即使用DoSomething (Of T) ()而不是仅使用DoSomething()。
<Extension()> _
Public Sub DoSomething(Of T)(ByVal myGenericObj As MyGeneric(Of T))
End Sub

希望这能有所帮助。

2
C# 版本:public static void DoSomething<T>(this MyGeneric<T> myGenericObj) - Jeff Widmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接