在.NET 運行時編譯和執行新程式碼
開發處理用戶提供的方程式的應用程式可能會為計算效率帶來挑戰。傳統上,這些方程式是手動解析的,導致處理大量資料時產生開銷。更有效的解決方案是在運行時將方程式轉換為函數,從而消除不斷解析的需要。
這在 .NET 中可能嗎?
是的,編譯並在 .NET 中,可以使用 Microsoft.CSharp、System.CodeDom.Compiler 和 System.Reflection中的實體在運行時執行新程式碼
範例:編譯和呼叫方法
考慮這個範例,它使用方法編譯一個類並執行它:
string sourceCode = @" public class SomeClass { public int Add42 (int parameter) { return parameter += 42; } }"; var compParms = new CompilerParameters { GenerateExecutable = false, GenerateInMemory = true }; var csProvider = new CSharpCodeProvider(); CompilerResults compilerResults = csProvider.CompileAssemblyFromSource(compParms, sourceCode); object typeInstance = compilerResults.CompiledAssembly.CreateInstance("SomeClass"); MethodInfo mi = typeInstance.GetType().GetMethod("Add42"); int methodOutput = (int)mi.Invoke(typeInstance, new object[] { 1 }); Console.WriteLine(methodOutput); Console.ReadLine();
好處:
以上是.NET 能否在執行時編譯並執行新程式碼以提高效率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!