评估“User.Name.Length> 0”等字符串条件为true或false的最佳方法是什么?

时间:2013-03-26 13:24:11

标签: c# asp.net-mvc-3 c#-4.0

在运行时评估存储为字符串的条件表达式的最佳方法是什么。

我正在使用MVC3,.NET4,C#4。

因此,假设解决方案是一个名为“Eval”的方法,那么:

if eval("User.Name.Length>0")
{return true;}

的行为方式应与:

相同
if (User.Name.Length>0)
{return true;}

所以我还需要访问任何inscope .NET类型作为此解决方案的一部分。

那么“Eval”的解决方案是什么?

感谢。

P.S我发布了一个单独的问题,专注于动态LINQ作为解决方案。但是我现在认为我的解决方案更简单,因此这个问题。

EDIT。不要在“用户”中阅读太多内容。它可以是任何物体。我感兴趣的是如何在运行时评估字符串表达式,就好像它们是在编译时明确编写的一样。另一个例子可能是:

if eval("mycat.coatcolour=='ginger'")
{return true;}

1 个答案:

答案 0 :(得分:2)

您必须实现自己的解析器并使用reflection / FastMember来导航路径或寻找像CS-Script这样的脚本解决方案。