我一直在网上寻找一种在运行时编译代码和操作正在运行的应用程序对象(属性等)的简洁方法。我遇到过 Snippy、CodeDom 和 CSharpCodeProvider,但我并不完全了解如何在我的应用程序中使用这些解决方案来做我想做的事。底线是,我想在外部文件中有一小部分代码,这样我就可以在运行时换出不同的代码(例如操作数据的公式等)。有人可以向我解释一下我该如何在一个整洁的 WPF 应用程序?我只需要向外部代码传递一些数据,执行后它会返回一些我可以用来填充对象的数据。PS:我还考虑过从字符串解析数学表达式并以这种方式操作我的数据,但如果我可以在运行时在外部解析和执行 C# 代码,它将给我更多的自由和对公式和数据的控制。提前致谢。
问问题
1440 次
1 回答
4
我认为使用 .NET 兼容的动态语言(如IronPython或IronRuby )会做得更好。它们与 C#/.NET 几乎无缝集成,实际上旨在提供执行时脚本化。
Jon Skeet 的C# in Depth中 IronPython 使用的简单示例:
// the python code
string python = @"
text = 'hello'
output = input + 1
";
// setup the scripting engine
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
scope.SetVariable("input", 10);
engine.Execute(python, scope);
// the results
Console.WriteLine(scope.GetVariable("text"));
Console.WriteLine(scope.GetVariable("input"));
Console.WriteLine(scope.GetVariable("output"));
不用说,这些脚本可以使用 .NET 基类库以及您向它们公开的任何额外方法。
于 2011-04-05T19:12:49.977 回答