Ich habe folgende (vereinfachte) Methode:Cast T-Parameter in der generischen Methode Datetime
private static string GetStringFromValue<T>(T val)
{
if (typeof(T) == typeof(DateTime))
{
return string.Format("{0}", ((DateTime)val).Year.ToString("0000"));
}
return string.Empty;
}
Bei der Besetzung "(Datetime) val" Ich erhalte die folgenden Fehler:
Cannot cast expression of Type 'T' to type 'DateTime'
Was kann ich auf die Year-Eigenschaft des DateTime-Parameters zugreifen?
UPDATE: Vielen Dank für all Ihre sehr schnellen Antworten. Diese Methode (und der Methodenname) ist wirklich (!) Vereinfacht, um genau mein Problem zu zeigen und alle nur kopieren zu lassen & fügen Sie es in sein eigenes visuelles Studio ein. Es ist nur, dass ich einige typspezifische Werte hinzufügen wollte, wenn der Typ eine DateTime ist. Außerdem sind 99% der Methode gleich.
Warum in aller Welt schreibst du 'String, Format (" {0} ", etwas)'? – SLaks
Nicht nur das. 'something.ToString()'. – recursive
Jahr ist nicht der einzige Wert, den ich bekommen möchte. Aber ich habe die Methode vereinfacht. Oder ist es falsch, dass ich String.Format überhaupt verwende? Es hat eine viel bessere Leistung und Lesbarkeit als: x.Year + ":" + x.Month + ":" + ..... – Chris