私は実行時にコードをコンパイルし、実行中のアプリケーションのオブジェクト (プロパティなど) を操作するためのきちんとした方法をオンラインで探していました。Snippy、CodeDom、および CSharpCodeProvider に出くわしましたが、アプリケーションでこれらのソリューションを使用して目的を達成する方法を完全には理解していませんでした。要するに、実行時に別のコードを交換できるように、コードのごく一部を外部ファイルに保持したいのです (たとえば、データを操作するための数式など)。きちんとした方法で WPF アプリケーションですか? 外部コードにデータを渡すだけで、実行後にオブジェクトに入力できるデータが返されます。PS: また、文字列から数式を解析し、その方法でデータを操作することも考えましたが、実行時に C# コードを外部で解析して実行できれば、式とデータをより自由に制御できるようになります。前もって感謝します。
1440 次
1 に答える
4
IronPythonやIronRubyなどの .NET 互換の動的言語を使用する方がよいと思います。これらは 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 Base Class Library と、それらに公開する追加のメソッドを使用できます。
于 2011-04-05T19:12:49.977 に答える