Wiem że to temat dotyczący programowania pod Linuksem, zapewne jednak wiele osób programujących robi to również pod, o zgrozo, Windowsem, zatem proszę o nieusuwanie tematu, a nuż znajdzie się znawca gotowy mi pomóc.
Do rzeczy. Jest sobie klasa generyczna:
Kod: Zaznacz cały
public class GenericProperty<T> {
T Value;
public GenericProperty(T initial) {
Value = initial;
}
public String Property {
get {
return Value.ToString();
} set {
//T.TryParse(value, out Value);
}
}
}
Chcielibyśmy, aby przechowywała w prywatnym polu
Value wartości typu
Double, Byte, Int16, jednym słowem tylko takie, które definiują statyczną metodę
TryParse, a zapewniała dostęp do tego pola przez właściwość
Property typu
String. Oczywiście kompilator się burzy o zakomentowaną linijkę, i słusznie, bo skąd ma niby wiedzieć, że we wszystkich instancjach tej klasy będziemy używać tylko tych wyżej wspomnianych typów. Oczywiście, można by to rozwiązać stosując tam drabinkę
if else sprawdzającą typ, jednak mija się to trochę z celem, którym jest uniwersalność - lub inaczej - samoorientowanie się klasy w typie obiektów T. Pytanie więc brzmi, czy da się to napisać bez sprawdzania typu.