C#执行动态代码(字符串形式的函数调用)
有时候我们需要动态生成一些代码并执行,类似JavaScript里面eval()的运用场景。如下是实例。
实现了max和min方法的Function类:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Function { public double max(double a, double b) { return (a > b) ? a : b; } public double min(double a, double b) { return (a < b) ? a : b; } } }
函数调用:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string code = "max(1,2)"; // function name string name = code.Substring(0, 3); //max // function parameter(s) object[] parameter = new object[2]; parameter[0] = Convert.ToDouble(code.Substring(4, 1)); //1 parameter[1] = Convert.ToDouble(code.Substring(6, 1)); //2 var function = Activator.CreateInstance(typeof(Function)) as Function; var method = function.GetType().GetMethod(name); object result = method.Invoke(function, parameter); Console.WriteLine(result.ToString()); Console.ReadKey(); } } }