Ich versuche, von einem String einen generischen Typ zu konvertieren. Der generische Typ wird ein Int32, Int64, Boolean, Double und so weiter ... Ich habe versucht, zwei Ansätze:Generischer Typ Konverter - TypeConverter oder Convert.ChangeType
public static Boolean TryParse<T>(String source, out T value) {
TypeConverter converter = TypeDescriptor.GetConverter(typeof(T));
try {
value = (T)converter.ConvertFromString(source);
return true;
} catch {
value = default(T);
return false;
}
}
public static Boolean TryChangeType<T>(Object source, out T value) {
try {
Type type = Nullable.GetUnderlyingType(typeof(T)) ?? typeof(T);
value = (T)Convert.ChangeType(source, type);
return true;
} catch {
value = default(T);
return false;
}
}
Die zweite ist allgemein wie es eine Aufgabe übernimmt.
Ich überlege auch, einen IFormatProvider in TryChangeType zu übergeben, der in Convert.ChangeType verwendet werden würde, um Kulturprobleme zu lösen und so weiter.
Halten Sie den zweiten Ansatz für besser?
Wie kann ich meinen Code verbessern?
Mögliches Duplikat von [TypeConverter vs. Convert vs. TargetType.Parse] (http://stackoverflow.com/questions/7010669/typeconverter-vs-convert-vs-targettype-parse) –