Я имею в виду, я хочу преобразовать это:
string a = "40.00";
Convert.ChangeType(a, typeof(decimal))
результат будет десятичное значение «4000»
проблема в том, что вызов convert находится в очень абстрактном универсальном методе в преобразователе xmlToObject. Я не хочу программно добавлять множество разных исключений для правильного преобразования.
С уважением, Крис
Десятичная точка не может быть представлена символом точки в вашей текущей культуре.
В общем, при выполнении преобразований, инвариантных к культуре, лучше указывать CultureInfo.InvariantCulture в качестве аргумента IFormatProvider
для метода :
(decimal) Convert.ChangeType(a, typeof(decimal), CultureInfo.InvariantCulture);
Следующий код
string s = "40.00";
decimal d = (decimal)Convert.ChangeType(s, typeof(decimal));
делает d = 40. Это выглядит хорошо для меня. В чем именно ваша проблема?
Редактировать: Кажется, у вас могут быть проблемы с используемой культурой. Сделайте это для конвертации:
string s = "40.00";
decimal d = (decimal)Convert.ChangeType(s, typeof(decimal), CultureInfo.InvariantCulture);