本帖最后由 danmali 于 2014-08-22 13:44:12 编辑

解决方案 »

  1.   

    有动态编译,但远没eval方便
    不过你的需求也不需要eval            dynamic a = new ObjectA();
                a.B.C.D.id = 100;
    当然你至少要把变量声明成public的= =
      

  2.   

    动态编译即可 具体请google
      

  3.   

    其实你完全可以考虑用加载脚本方式,wow就是这样,主程序是c++,副本之类用luac#其实也支持lua的。
      

  4.   

    我是在写一个数据访问层的基类,目的就是直接把存储过程的相关数据,不通过 DataTable、DataSet,而直接转换为 我的 类对象 或 List<类> 对象。现在我现实了 类中只有数值类型或一些特殊类型的返回(比如:int、string、SqlXml、Guid)等等,但是如果在类中还包含了自定义的另一个类的对象,这个初期就没有考虑到。我现在的类调用的代码如下:IDataQuery query = new MsSqlQuery(“数据连接字符串”, "存储过程名称");
    //设置存储过程参数
    query.ParameterInputSet("存储过程参数名",输入数值);
    //设置地图参数
    query.MapClassSet(“类属性名称”, "数据库字段名称"); 
    //返回结果
    List<eUser> ListUser = query.ListObject<eUser>();现在的问题和“地图参数”有关系:地图参数的意思是 告诉最后的执行方法 query.ListObject<eUser>() ,我需要将数据库的哪个字段对应到生成新对象的哪个属性上面。之前写 query.MapClassSet(“Name”, "name");//就是说把存储过程返回的字段名为 name 的数据,返回到 eUser 的Name 属性上面;在最后执行 query.ListObject<eUser>(); 的时候,程序会按照我给的设置,返回一个我需要的 ListUser对象。但是,现在如果变成 query.MapClassSet(“City.CityId”, "cityId");我就不知道怎么做了