zoukankan      html  css  js  c++  java
  • C# Eval

    public class EvalClass
        {
            public static object Eval(string sCSCode)
            {
                CSharpCodeProvider c = new CSharpCodeProvider();
                ICodeCompiler icc = c.CreateCompiler();
                CompilerParameters cp = new CompilerParameters();

                cp.ReferencedAssemblies.Add("system.dll");
                cp.ReferencedAssemblies.Add("system.xml.dll");
                cp.ReferencedAssemblies.Add("system.data.dll");
                cp.ReferencedAssemblies.Add("system.windows.forms.dll");
                cp.ReferencedAssemblies.Add("system.drawing.dll");

                cp.CompilerOptions = "/t:library";
                cp.GenerateInMemory = true;
                StringBuilder sb = new StringBuilder("");

                sb.Append("using System;\n");
                sb.Append("using System.Xml;\n");
                sb.Append("using System.Data;\n");
                sb.Append("using System.Data.SqlClient;\n");
                sb.Append("using System.Windows.Forms;\n");
                sb.Append("using System.Drawing;\n");

                sb.Append("namespace CSCodeEvaler{ \n");
                sb.Append("public class CSCodeEvaler{ \n");
                sb.Append("public object EvalCode(){\n");
                sb.Append("return " + sCSCode + "; \n");
                sb.Append("} \n");
                sb.Append("} \n");
                sb.Append("}\n");

                CompilerResults cr = icc.CompileAssemblyFromSource(cp, sb.ToString());
                if (cr.Errors.Count > 0)
                {
                    return null;
                }

                System.Reflection.Assembly a = cr.CompiledAssembly;
                object o = a.CreateInstance("CSCodeEvaler.CSCodeEvaler");
                Type t = o.GetType();
                MethodInfo mi = t.GetMethod("EvalCode");
                object s = mi.Invoke(o, null);
                return s;
            }
        }

  • 相关阅读:
    【小白的CFD之旅】14 实例反思
    【小白的CFD之旅】13 敲门实例【续3】
    【小白的CFD之旅】12 敲门实例【续2】
    【小白的CFD之旅】11 敲门实例【续】
    【小白的CFD之旅】10 敲门实例
    【小白的CFD之旅】09 初识FLUENT
    【小白的CFD之旅】08 CFD速成之道
    【小白的CFD之旅】07 CFD常识
    【小白的CFD之旅】06 流体力学基础
    软件工程-构建之法 理解C#一小段程序
  • 原文地址:https://www.cnblogs.com/zwei1121/p/993975.html
Copyright © 2011-2022 走看看