在c#中运行时将字符串转换为可执行代码?

时间:2011-11-30 05:57:01

标签: c# eval

有没有办法可以在运行时将一串代码转换成可执行代码?#/ p>

所以,如果我有一个谓词文件

This is normal text in a txt file
    u => u.Contains("android") && u.Contains("webkit")
    u => u.Contains("iphone") && u.Contains("webkit")

我想通过我的程序读取它,然后将每个谓词捕获为字符串,然后将其转换为代码。类似的东西:

string[] predicates = ///get file contentsa

foreach(var predicate in predicates)
{
       if(userAgent.ConformsTo(eval(predicate))) return true;
}

2 个答案:

答案 0 :(得分:2)

您可以使用CSharpCodeProvider类,但是您需要在代码段周围构建相当多的额外代码,因为您必须提供完整的类。我为深度C#的“Snippy”工具做了这个,你可以download the source得到一个简单的例子来说明它是如何完成的。

然而,Roslyn在这个领域的生活变得越来越简单 - 你可能想要掌握CTP并探索它。

答案 1 :(得分:0)