Typ generyczny - kontrola typu

0

Cześć,

Ostatnio walczę z typami generycznymi. Chciałbym by dana klasa mogła obsługiwać tylko konkretne typy generyczne, np. wszystkie klasy, które obsługują metody z Interfejsu IExample. Macie jakiś pomysł na wykonanie tego?

Najlepiej by kontrola była już na poziomie kompilacji, a jeśli jest to niemożliwe to przynajmniej w konstruktorze - ale bez potrzeby tworzenia tymczasowego obiektu :)

Pozdrawiam,
Grzegorz Wiśniewski

0

Nie wiem jak usunąć, temat już nie ważny. Można zrobić to oczywiście w taki sposób jak opisuje MSDN: http://msdn.microsoft.com/en-us/library/d5x73970.aspx

0
<T>(t something) where T: IExample
{
...
}
0

Pozwolę sobie odświeżyć ten temat :) O zastosowaniu generycznych klas / metod wydawało mi się, że wiem już całkiem sporo, do momentu gdy pojawił się problem...

Potrzebuję stworzyć klasę generyczną, która przyjmować będzie typy dla których zdefiniowany został operator '>' i '<' itd..

Zastanawiam się czy jest to możliwe?

Pozdrawiam,
Grzegorz

0

nie

0

No chyba, że operatory te wywoływałyby odpowiednie metody zdefiniowane w jakimś interfejsie.

1

IComparable? ;)

0
MSM napisał(a)

IComparable? ;)

to jedyne wyjscie, ale operatorow >/</!/= ... i tak nie dostarczy.
zapomnijcie o jakimkolwiek metaprogramowaniu z uzyciem operatorow. dopoki C# nie wprowadzi czegos a'la statyczne interfejsy, tego nie bedzie, gdyz nie da sie statycznie zdefiniowac class/generic/type/constraintow ktore by takie wymaganie wyrazaly. cieszmy sie ze w cs4 dorzucili lepsze (ko)wariancje.. szkoda ze tylko w jednym (dwoch?) miesjcach da sie je zauwazyc:| nie da sie i kropka, jesli bardzo chcecie, zostaje zmienic jezyk, np. na ironruby i zatrzasnijcie to w pobocznej dllce.

1 użytkowników online, w tym zalogowanych: 0, gości: 1