Dot-Net

將擴展方法應用於具有泛型類型的泛型類

  • March 4, 2011

我正在使用 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 作為通用類,我所承受的所有這些痛苦都來自另一個庫,並在許多不同的地方使用。我對在我繼承的泛型類中繼承和添加這個方法有點警惕。

如果您使擴展方法成為通用方法,它應該可以工作

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

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

希望這可以幫助

引用自:https://stackoverflow.com/questions/349064