2008-12-08 20 views
10

Pracowałem z klasą generyczną w vb.net.
Wygląda na to, że metody rozszerzenia nie można zastosować do klasy ogólnej bez określenia typu.Stosowanie metody Extension do ogólnej klasy o typie ogólnym

mam typowego klasa

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

Jest Ok

<Extension()> _ 
Public Sub DoSomething(ByVal myGenericDoubleObj As MyGen(Of Double)) 

End Sub 

To nie jest ok (IDE daje mi błędu T jako niezdefiniowane.)

<Extension()> _ 
Public Sub DoSomethingGeneric(ByVal myGenericObj As MyGen(Of T)) 

End Sub 

Czy to coś wspólnego ze statycznym sprawdzaniem .Net.
Mówiąc: "Coś, co możesz spróbować zrobić z Typem T, może nie być kompatybilne i nie pozwolę ci tego zrobić."

P.S. Cały ten ból, który wziąłem jako klasa ogólna, pochodzi z innej biblioteki i jest używany w wielu różnych miejscach. Nie boję się dziedziczenia i dodawania tej metody do mojej odziedziczonej klasy generycznej.

+1

+ 1 dokładnie to, czego szukałem. –

Odpowiedz

15

Jeśli się metoda rozszerzenie metoda rodzajowa powinno działać

tj DoSomething (Of T)() instread sprawiedliwego doSomething()

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

Nadzieja to pomaga

+0

Mam to do roboty. Mała głupota z mojej strony. Dzięki. – Biswanath

+2

Wersja C#: public static void DoSomething (this MyGeneric myGenericObj) –

Powiązane problemy