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

标签 .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 型做的事情可能不兼容,我不会允许你这样做。”

附注我作为通用类所承受的所有痛苦都来自另一个库,并在许多不同的地方使用。我对在继承的泛型类中继承和添加此方法不太谨慎。

最佳答案

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

即 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/

相关文章:

.net - 流畅的 NHibernate 与开发/测试/生产数据库?

jquery - 使用 Jquery 和 AJAX 将参数传递给 VB.NET webmethod

具有有界参数的泛型的 Java 接口(interface)

java - 具有不同参数的Java抽象方法

java - 具有可变数量的方法引用的通用对象比较方法用于比较

c# - 区分两大段文字

javascript - 如何禁用自定义图例剑道图

c# - 如何将中间件添加到.net 6中的worker项目中?

mysql - 如何将datagridview内容求和到数据库VB.net多个用户

vb.net - 什么都没有与什么都没有