.NET で新しいコードを生成してオンザフライで実行できますか?
ユーザーが数式を入力できるようにしたいと考えています。テキスト ボックスを使用して、受信データ ポイントに適用します。計算ごとに方程式のテキストを解析するのが最初のアプローチでしたが、実行時に方程式を関数にコンパイルするという、より効率的な解決策を模索します。
.NET では、Microsoft の技術を使用してこれが実際に可能です。 CSharp、System.CodeDom.Compiler、および System.Reflection 名前空間。単純なコンソール アプリケーションでこの概念を説明できます。
using Microsoft.CSharp; using System; using System.CodeDom.Compiler; using System.Reflection; namespace RuntimeCompilationTest { class Program { static void Main(string[] args) { // Define the source code for the SomeClass class string sourceCode = @" public class SomeClass { public int Add42 (int parameter) { return parameter += 42; } }"; // Set up compilation parameters var compParms = new CompilerParameters{ GenerateExecutable = false, GenerateInMemory = true }; // Create a C# code provider var csProvider = new CSharpCodeProvider(); // Compile the source code CompilerResults compilerResults = csProvider.CompileAssemblyFromSource(compParms, sourceCode); // Create an instance of the SomeClass type object typeInstance = compilerResults.CompiledAssembly.CreateInstance("SomeClass"); // Get the Add42 method MethodInfo mi = typeInstance.GetType().GetMethod("Add42"); // Invoke the Add42 method and display the output int methodOutput = (int)mi.Invoke(typeInstance, new object[] { 1 }); Console.WriteLine(methodOutput); Console.ReadLine(); } } }
このコード内:
このデモは、コンパイルと実行の機能を示します。新しいコードは .NET で動的に作成されます。
以上が.NET は実行時にコードを動的にコンパイルして実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。