Подтвердить что ты не робот

Применение метода расширения к универсальному классу с общим типом

Я работал с общим классом в vb.net.
И кажется, что метод расширения не может быть применен к универсальному классу без указания типа.

У меня есть этот общий класс

Public Class MyGeneric(Of T)
    'Methods and properties go here 
    '
    '
End Class  

Это Ok

<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. Вся эта боль, которую я принял как общий класс, исходит из другой библиотеки, и используется во многих разных местах. Я немного опасаюсь наследования и добавления этого метода в свой унаследованный общий класс.

4b9b3361

Ответ 1

Если вы сделаете свой метод расширения универсальным методом, он должен работать

i.e DoSomething (Of T)() только для DoSomething()

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

Надеюсь, что это поможет