例如  string str="a==b";
 我要执行的语句是if (a==b)就是把字符串转化成代码~!

解决方案 »

  1.   

    这个是没有办法喽,除非你的。NET是4.0才可以
      

  2.   

    不过,动态编译应该是可以解决你的问题看一下这个文章
    http://blog.csdn.net/Linux7985/archive/2010/06/24/5690532.aspx
      

  3.   

    调用c# 编译器 就可以了
    相应的还有vb 编译器 等等。
    还有一种方法是 使用sql 的 动态功能
    把要执行的功能拼接成sql字符串 
    使用 executesql 存储过程来实现 
      

  4.   

    你需要的是一种能解析的脚本语言。Lua可以配合.Net使用。能完全满足你的要求!
      

  5.   

    前面说了用codedom,差不多和我们写的代码变成可执行程序的过程一样。但是代码必须是完整的。
    例如 string str="class a ( static main(){ if (1=1) console.Print("hello world."); })";
     
    C#动态编译、执行代码:http://blog.csdn.net/xufei96/archive/2010/01/07/5152787.aspx另一个选择是使用动态语言,如ironpython等
      

  6.   

    楼主要的就是eval函数的功能,这个动态语言才有
      

  7.   

    如果有需要.我可以帮你写个Lua结合.Net的例子。不止能判断 or and这样的条件,还能执行你想执行的操作。
      

  8.   

    我以前用的,一个是动态编译,一个是利用Dataset的Express表达式,但仅仅支持sql表达式    public class MyEval
        {
            public static object Eval(string expression)
            {
                //创建编译器
                ICodeCompiler comp = new CSharpCodeProvider().CreateCompiler();
                CompilerParameters paramerts = new CompilerParameters();            //设置源代码
                StringBuilder objBuild = new StringBuilder();
                objBuild.Append("using System; \n");
                objBuild.Append("namespace Aptech.Showlin._temp { \n");
                objBuild.Append("  public class _evalTemp { \n");
                objBuild.Append("    public object _get() ");
                objBuild.Append("{ ");
                objBuild.AppendFormat("      return ({0}); ", expression);
                objBuild.Append("}\n");
                objBuild.Append("} }");            //动态编译
                CompilerResults cr = comp.CompileAssemblyFromSource(paramerts, objBuild.ToString());            System.Reflection.Assembly objAss = cr.CompiledAssembly;
                object o=objAss.CreateInstance("Aptech.Showlin._temp._evalTemp");
                System.Reflection.MethodInfo mi = o.GetType().GetMethod("_get");
                return mi.Invoke(o, null);
            }        public static object EvalSql(string expression)
            {
                System.Data.DataTable dt = new System.Data.DataTable();
                System.Data.DataColumn dc = new System.Data.DataColumn("temp", typeof(string), expression);
                dt.Columns.Add(dc);
                dt.Rows.Add(dt.NewRow());
                return dt.Rows[0][0];
            }
        }
      

  9.   

    在神不知鬼不觉的情况下,把WebBrowse引入来。
    等到月黑风高的晚上,把 a=b 转化成 js 代码。
    问题转移到了 js 与 webBrowse上了,楼主看着办吧
      

  10.   

    把字母的位置取出来然后再转换成int型应该可以吧
      

  11.   

    我听说过CodeDom是可以的,但没实际用过。
      

  12.   

    哈哈,楼主是想用在linq的动态多条件查询上吧?如果这样我倒有妙招,不用
    using System.Linq.Dynamic;

    using System.Linq.Expressions;
    也不用伪linq :  LQDC.ExecuteQuery("select * from table where item like %ak47%");
      

  13.   

    代码通俗易懂就好了,不要搞得花里胡哨的
    用三元运算符就可以了——优雅
    何必搞什么boole boo = 1 == 1 && 2 == 2什么的。
    自己写个词法分析器或者语法分析器类似的接口得了
      

  14.   

    没遇到过要是实在要用的话用str.substring(0);呵