Нет, Convert.ChangeType
работает только с фиксированным набором типов, я полагаю ... или, если исходный объект реализует IConvertible
, он может вызвать IConvertible.ToType
. Это означает, что вы могли бы реализовать IConvertible
в своем классе User
и иметь
Convert.ChangeType(user, typeof(string))
работает, но это не будет работать наоборот.
У вас есть фиксированный набор типов, которые нужно конвертировать? Если это так, у вас может быть Dictionary<Type, Func<string, object>>
, который вы будете заполнять делегатами конверсии. Тогда вам просто нужно вызвать соответствующее преобразование и привести возвращаемое значение. Это некрасиво, но, вероятно, ваш лучший выбор.