Hallo,
ich arbeite momentan in einem Windows Forms Projekt und habe eine generische Klasse, die verschiedene Datentypen speichern kann und je nach Datentyp dann unterschiedliche Control-Elemente auswirft. Also bei DateTime soll ein DatePicker zurückgegeben werden,
bei string eine Textbox usw.
Soweit auch kein Problem, jedoch bei der Zuweisung des values bekomme ich immer einen Compiler-Error.
Hier ein kurzer Ausschnitt des Codes wo der Fehler auftaucht:
public class instrElem<T>
{
private T _val;
....
private void addCntrl ()
{
---
if (_val.GetType()==typeof(DateTime))
{
DateTimePicker cntrl = new DateTimePicker();
cntrl.Value = (DateTime)_val;
}
...
}
}
Der Compiler meldet nun, dass er den Datentyp T nicht in DateTime umwandeln kann. Das ist ja soweit erstmal klar, weil ich ja durchaus unterschiedliche Datentypen als T haben kann. Aber in diesem Fall teste ich ja vorher den Datentyp und weiß dann genau,
dass kein anderer Datentyp auftreten kann.
Hat jemand eine Idee, wie man das Problem umgehen kann? Gibt es dafür einen vorgesehenen Befehl? Ich würde ungerne auf die generische Programmierung hier verzichten weil ich das ganze für diverse Datentypen habe und ansonsten sehr viel Code mehrfach hätte.
Viele Grüße
Felix
EDIT: Ich konnte das Problem lösen indem ich Convert.ChangeType(_val,typeof(T)) verwendet habe.