Tach!
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));
}
Ein
IEnumerable<DateTime> myArray = myDateList.Cast<DateTime>();
sollte es auch tun.
> 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.
myDateList ist ja bereits IEnumerable<T>, das wäre ja schon da. Ansonsten versuchst du hier an der starken Typisierung C#s vorbeizuarbeiten. Du willst etwas haben, das mal den einen und mal den anderen Typ annehmen kann. Das gibts nur in der Form dynamic:
dynamic myArray;
Damit ist dann keinerlei Typ zur Compile-Zeit mehr verfügbar und auch Dinge wie Codevervollständigung sind dafür nicht verfügbar.
> if(typeof(myDateList) == typeof(string))
myDateList ist die gesamte Liste. Nur deren Elemente sind vom Typ string (oder was anderes), nicht die Liste selbst. Du musst da schon das T vergleichen:
typeof(T) == typeof(string)
> 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:
Erst nach einem Typecast geht das. (Oder wenn du T auf DateTime einschränkst, was du ja nicht willst.) Auch mit dem dynamic brauchst du einen Typecast zum konkreten Typ, wenn du die Liste weiterverarbeiten möchtest. Zum Beispiel so:
IEnumerable<string> result = ((IEnumerable<DateTime>)myArray).Select(item => item.ToShortDateString());
Ich kenne die Hintergründe deines Vorhabens nicht, aber mir scheint das - obwohl man das irgendwie hinbekommt - nicht die Lösung für das eigentliche Problem zu sein. Warum kommen in der Liste unterschiedliche Typen an? Warum muss man die gemeinsam bearbeiten, dann aber doch unterschiedlich? Warum können es keine spezialisierten Verarbeiter für die jeweiligen Typen von Daten sein?
dedlfix.