在 .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中文网其他相关文章!