Hallo,
danke für deine klare Erklärung. Meine Methode nimmt ein "IEnumerable<T>" entgegen.
GetList<DateTime>(myDatTimeListAsToList); //Aufruf
private void GetList<T>(IEnumerable<T> myDate) {
}
Das Ganze wandle ich in dieser Funktion, wie vorhin erwähnt, in einem DateTime-Typ um:
private void GetList<T>(IEnumerable<T> myDateList) {
IEnumerable<DateTime> myArray = myDateList.ToList().ConvertAll(d => Convert.ToDateTime(d));
}
Das funktioniert so auch gut. Ich wollte nun diese Funktion insoweit erweitern, dass ich unterschiedliche Listen mit unterschiedlichen DatenTypen in dieser Funktion behandeln kann. Also musste ich erst mal die Datentypen ermitteln und anhand deren Typen eine Convertierung durchführen. Und da komme ich nicht weiter, weil ich nicht genau weiß, wodurch ich den "IEnumerable<DateTime>"-Datentyp im oberen Beispiel ersetzen soll:
private void GetList<T>(IEnumerable<T> myDateList) {
IEnumerable<T> myArray; //Mein Problem ist hier. Was muss hier stehen? IEnumerable<T> in der Form funktionirt hier nicht.
if(typeof(myDateList) == typeof(string))
myArray = myDateList.ToList().ConvertAll(d => Convert.ToString(d));
if(typeof(myDateList) == typeof(DateTime))
myArray = myDateList.ToList().ConvertAll(d => Convert.ToDateTime(d));
}
Wie erwähnt, ich habe versuch eine List<DateTime> zur laufzeit zu generieren. Obwohl ich hinterher eine DateTime-Liste erhalte, sieht es so aus, dass die Daten trotzdem keine richtige DateTime-Typen sind, weil ich daruaf z.B. keine Linq-Anweisung wie diese:
private void GetList<T>(IEnumerable<T> myDateList) {
IEnumerable<T> myArray;
if(typeof(myDateList) == typeof(string))
myArray = myDateList.ToList().ConvertAll(d => Convert.ToString(d));
if(typeof(myDateList) == typeof(DateTime))
myArray = myDateList.ToList().ConvertAll(d => Convert.ToDateTime(d));
List<SelectListItem> item = new List<SelectListItem>();
items.AddRange(myDateList.Select(date => new SelectListItem
{
Text = date.ToString("dd.MM.yyyy"),
Value = date.ToString("dd.MM.yyyy"),
}));
}
Hier wird z.B. nach der Typumwandlung zur Laufzeit die ToString("dd.MM.yyyy") mit einem Parameter nicht mehr erkannt. Mit dem expliziten Datentyp "IEnumerable<DateTime> myArray" ist aber alles in Ordnung.
Gruß