Вы взгляните на метод ChangeType :
string s1 = "3.45";
string s2 = "System.Single";
Type targetType = Type.GetType(s2, true);
object result = Convert.ChangeType(s1, targetType);
И еще один:
string s1 = "08/12/2010";
string s2 = "System.DateTime";
Type targetType = Type.GetType(s2, true);
object result = Convert.ChangeType(s1, targetType);
Для обработки специфичных для культуры преобразований, таких как десятичный разделитель, формат даты и времени, есть перегрузка этого метода , который необходимо использовать для передачи поставщика формата:
string s1 = "3,45";
string s2 = "System.Single";
Type targetType = Type.GetType(s2, true);
object result = Convert.ChangeType(s1, targetType, new CultureInfo("fr-FR"));