У меня есть необходимость изучить, чтобы увидеть, если объект может быть преобразован в определенной ТипДанных или нет, и пришел с этим:Dynamic TryParse для всех типов данных
public static bool TryParseAll(System.Type typeToConvert, object valueToConvert)
{
bool succeed = false;
switch (typeToConvert.Name.ToUpper())
{
case "DOUBLE":
double d;
succeed = double.TryParse(valueToConvert.ToString(), out d);
break;
case "DATETIME":
DateTime dt;
succeed = DateTime.TryParse(valueToConvert.ToString(), out dt);
break;
case "INT16":
Int16 i16;
succeed = Int16.TryParse(valueToConvert.ToString(), out i16);
break;
case "INT":
Int32 i32;
succeed = Int32.TryParse(valueToConvert.ToString(), out i32);
break;
case "INT32":
Int32 i322;
succeed = Int32.TryParse(valueToConvert.ToString(), out i322);
break;
case "INT64":
Int64 i64;
succeed = Int64.TryParse(valueToConvert.ToString(), out i64);
break;
case "BOOLEAN":
bool b;
succeed = Boolean.TryParse(valueToConvert.ToString(), out b);
break;
case "BOOL":
bool b1;
succeed = bool.TryParse(valueToConvert.ToString(), out b1);
break;
}
return succeed;
}
мне интересно, есть ли другими способами? Что более динамично и эффективно?
Спасибо!
бы лучше в [CodeReview.SE]? –
Найти метод «TryParse» с отражением, если не найден, исключить исключение, иначе компилируйте делегата, используя «Linq.Expressions», Cache it, Выполняйте его всякий раз, когда вызывается метод. –