首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本地化环境下的动态表达式解析

本地化环境下的动态表达式解析
EN

Stack Overflow用户
提问于 2012-12-06 20:46:39
回答 1查看 842关注 0票数 0

所以我尝试使用System.Linq.Dynamic解析一个简单的算术动态表达式。这在英语环境中运行良好,其中CurrentCulture是English-US (小数点分隔符是纯英文)。点)。尝试在非英语环境中运行代码(例如,保加利亚语中的Windows7x64,其中小数点分隔符是",“逗号),ParseLambda失败。

如果我在表达式中放入"1.0“,ParseLambda在带有PraseExpression的保加利亚环境中会失败,并显示"Invalid real literal '1.0'”(但在英语环境中不会失败)。如果我尝试将"1,0“放入我的表达式中,ParseLambda将失败,并显示ParseExpression提示”语法错误“(这个错误在两种环境中都失败)。

有人知道解决这个问题的方法吗?

还是我错过了什么?

或者,我能以某种方式设置解析表达式的区域性吗?

我需要我的应用程序在两个环境下都能很好地运行。

我的代码运行在.NET v4.0上,并且我添加了System.Linq.Dynamic.dll (1.0.0.0)作为对项目的引用。

代码如下:

代码语言:javascript
复制
using System;
using System.Linq;
using System.Linq.Dynamic;

namespace DynamicExpressionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //FAIL: ParseException: Invalid real literal '1.0' (fails only in non-English environment)
            var expression1 = DynamicExpression.ParseLambda(
                new System.Linq.Expressions.ParameterExpression[] { },
                typeof(double), 
                "1.0 + 1.0");
            var result1 = expression1.Compile().DynamicInvoke();
            double resultD1 = System.Convert.ToDouble(result1);
            Console.WriteLine(resultD1);

            //FAIL: ParseException: Syntax error (fails both in English and non-English environments)
            var expression2 = DynamicExpression.ParseLambda(
                new System.Linq.Expressions.ParameterExpression[] { }, 
                typeof(double), 
                "1,0 + 1,0");
            var result2 = expression2.Compile().DynamicInvoke();
            double resultD2 = System.Convert.ToDouble(result2);
            Console.WriteLine(resultD2);
        }
    }
}

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-07 00:07:23

您可以在运行该代码之前设置当前区域性。例如,在你的代码前添加下面这一行,它只适用于英文风格的小数点分隔符:

代码语言:javascript
复制
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13743954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档