Применение метода расширения к универсальному классу с универсальным типом
-
20-08-2019 - |
Вопрос
Я работал с универсальным классом в 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.Вся эта боль, которую я воспринял как Универсальный класс, взята из другой библиотеки и используется во многих разных местах.Я немного опасаюсь наследования и добавления этого метода в мой унаследованный универсальный класс.
Решение
Если вы сделаете свой метод расширения универсальным методом, он должен работать
то есть что-то делать (Из T) () instread всего лишь doSomething()
<Extension()> _
Public Sub DoSomething(Of T)(ByVal myGenericObj As MyGeneric(Of T))
End Sub
Надеюсь, это поможет