によって返された XML ドキュメントを内部的に解析するMdxClientを使用していますAdomdCommand.ExecuteXmlReader
。一部の値は として返されますが、クライアント側でxsd:double
それらが必要です。decimal
値を解析するこのライブラリはConvert.ChangeType
メソッドを使用します。ただし、 orxsd:double
などの一部の文字列は に変換できません:3.514680845402702E1
4.058719395866455E1
decimal
var result = Convert.ChangeType("3.514680845402702E1", typeof(decimal), CultureInfo.InvariantCulture);
投げFormatException
ます。
私はそれを2つのステップで変換できることを知っています:
var tmp = Convert.ChangeType("3.514680845402702E1", typeof(double), CultureInfo.InvariantCulture);
var result2 = Convert.ChangeType(tmp, typeof(decimal), CultureInfo.InvariantCulture);
しかし、ワンステップで可能かどうか疑問に思っていますか?たぶん、カスタムIFormatProvider実装を 3 番目の引数として提供することでしょうか? 何か案は?