是否可以使用特定的culture / format选项将lambda表达式(如x => x + 1.5
)转换为字符串?我知道我能做到:
Expression<Func<double,double>> expr = x => x + 1.5;
string s = expr.Body.ToString();
但是使用某些应用语言设置,它会使s
等于"x + 1,5"
(使用逗号而不是点)。似乎ToString()获取当前的文化信息。
如何以原始形式取回字符串,文化不变?
答案 0 :(得分:2)
有一种方法可以做到这一点,但它真的很难看......暂时改变当前的文化:
var previousCulture = Thread.CurrentThread.CurrentCulture;
try
{
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Expression<Func<double,double>> expr = x => x + 1.5;
string s = expr.Body.ToString();
}
finally
{
Thread.CurrentThread.CurrentCulture = previousCulture;
}