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

StackOverflow https://stackoverflow.com/questions/349064

Вопрос

Я работал с универсальным классом в 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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top