예제 #1
0
        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);
            }
        }
예제 #2
0
        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;
        }