public bool Init(string expr, Dimensions dimensions) { var cp = CodeDomProvider.CreateProvider("c#"); var cpar = new CompilerParameters() { GenerateInMemory = true, GenerateExecutable = false }; cpar.ReferencedAssemblies.Add("System.dll"); cpar.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location); string src = "using System;" + "class myclass : Gimp.Splitter.MyClassBase" + "{" + "public myclass(){}" + "public override double eval(double x,double y)" + "{" + "return " + expr + ";" + "}" + "}"; var cr = cp.CompileAssemblyFromSource(cpar, src); foreach (CompilerError ce in cr.Errors) { new Message(ce.ErrorText); } if (cr.Errors.Count == 0 && cr.CompiledAssembly != null) { Type ObjType = cr.CompiledAssembly.GetType("myclass"); try { if (ObjType != null) { myobj = (MyClassBase)Activator.CreateInstance(ObjType); myobj.w = dimensions.Width; myobj.h = dimensions.Height; } } catch (Exception ex) { Console.WriteLine(ex.Message); } return(true); } else { return(false); } }
public bool Init(string expr, Dimensions dimensions) { var cp = CodeDomProvider.CreateProvider("c#"); var cpar = new CompilerParameters() { GenerateInMemory = true, GenerateExecutable = false}; cpar.ReferencedAssemblies.Add("System.dll"); cpar.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location); string src = "using System;"+ "class myclass : Gimp.Splitter.MyClassBase" + "{"+ "public myclass(){}"+ "public override double eval(double x,double y)"+ "{"+ "return "+ expr +";"+ "}"+ "}"; var cr = cp.CompileAssemblyFromSource(cpar, src); foreach (CompilerError ce in cr.Errors) { new Message(ce.ErrorText); } if (cr.Errors.Count == 0 && cr.CompiledAssembly != null) { Type ObjType = cr.CompiledAssembly.GetType("myclass"); try { if (ObjType != null) { myobj = (MyClassBase)Activator.CreateInstance(ObjType); myobj.w = dimensions.Width; myobj.h = dimensions.Height; } } catch (Exception ex) { Console.WriteLine(ex.Message); } return true; } else return false; }