我一直在网上寻找一个整洁的方式在运行时编译代码和操作运行的应用程序的对象(属性等)。 我所遇到Snippy,CodeDom中和CSharpCodeProvider但我没有完全理解我可以利用这些解决方案在我的应用程序做我想做的。 底线是,我想有代码的外部文件中的一小部分,所以我可以在运行时换出不同的代码(例如公式来操作数据等),我究竟如何可以实现这一点可能有人向我解释在一个整洁的方式WPF应用程序? 我只需要通过外部代码一些数据,并执行后,将返回我一些数据,我可以填充的对象。 PS:我也想过从字符串解析数学公式和操作我的数据是这样,但如果我可以分析并在运行时执行外部的C#代码,它会给我在公式和数据更多的自由和控制。 提前致谢。
Answer 1:
我想你会做的更好使用.NET兼容一样的动态语言的IronPython或者IronRuby的 。 这些整合几乎无缝地与C#/。NET和实际设计提供执行时间可脚本。
从乔恩斯基特的IronPython的用法简单的例子, 在深度C# :
// 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基础类库和你接触到他们的任何额外的方法。
文章来源: Compiling C# code from txt file to interface with running wpf application