Moja funkcja wymaga podania go jako napisu a Typ jako T. Na podstawie T chcę przeanalizować ciąg znaków val jako ten typ, ale otrzymuję błąd z tytułu to pytanie. Każdy, kto ma jakiś wgląd lub inne sposoby realizacji tej funkcji, byłbym bardzo wdzięczny.Ograniczenie nie może być specjalną klasą "System.Object"
T Parse<T>(string val) where T : System.Object
{
TypeCode code = Type.GetTypeCode(typeof(T));
switch (code)
{
case TypeCode.Boolean:
return System.Boolean.Parse(val);
break;
case TypeCode.Int32:
return Int32.Parse(val);
break;
case TypeCode.Double:
return Double.Parse(val);
break;
case TypeCode.String:
return (string)val;
break;
}
return null;
}
Co jesteś robienie tam to nadużywanie leków generycznych. Jeśli zamierzasz sprawdzić typ, po co w ogóle używać generycznych? – Oded
możliwy duplikat [C# Generics: Constraining T gdzie T: Object nie kompiluje; Błąd: ograniczenie nie może być obiektem klasy specjalnej] (http://stackoverflow.com/questions/10644703/c-sharp-generics-constraining-t-where-t-object-doesnt-compile-error-constr) – nawfal