我們可以產生新程式碼並在 .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中文網其他相關文章!