原文:根据数据库记录动态生成C#类及其公共属性并动态执行的解决方案

问题:

C#中,想动态产生这么一个类:

public class StatisticsData
    {
        public string order_no { get; set; }
        public int qty { get; set; }

        public int ocv1_plan { get; set; }
        public int ocv1_A { get; set; }
        public int ocv1_Ba { get; set; }
        // ....
        public int ocv2_plan { get; set; }
        public int ocv2_A { get; set; }
        public int ocv2_B { get; set; }
        // ....
        public int ocv2_N { get; set; }

        public int ocv3_plan { get; set; }
        public int ocv3_A { get; set; }
        // ....
        public int ocv3_X { get; set; }
        public int ocv4_plan { get; set; }
        public int ocv4_A { get; set; }
        // ....
        public int ocv4_T { get; set; }
// ....
      }
需要用代码动态生成,因为上面的ocv1,2...以及Rank等级都是从数据库中取记录,有什么样的记录,有多少条记录,不确定,因此需要动态生成。
其中部分公共属性是固定的,而另一部分则是动态的,比如:ocv数字_xxx。
可能有多个不定的ocv数字及_xxx,分别根据一个List<string> listOcv(工序列表)和一个Dictionary<string, string[]> dictRank(等级列表)得到:
List<string> listOcv = new List<string>();
listOcv.Add("ocv1");
listOcv.Add("ocv2");
listOcv.Add("ocv3");
listOcv.Add("ocv4");
//...
Dictionary<string, string[]> dictRank=new Dictionary<string, string[]>();
dictRank.Add("ocv1", new string[]{"plan","A","Ba"});
dictRank.Add("ocv2", new string[]{"plan","A","B", ..., "N"});
dictRank.Add("ocv3", new string[]{"plan","A", ..., "X"});

dictRank.Add("ocv4", new string[]{"plan","A", ..., "T"});

思考其解决方案,提示:用DynamicObject 类继承或.net反射。

根据数据库记录动态生成C#类及其公共属性并动态执行的解决方案的更多相关文章

  1. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架

    1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...

  2. Java基础---Java---基础加强---类加载器、委托机制、AOP、 动态代理技术、让动态生成的类成为目标类的代理、实现Spring可配置的AOP框架

    类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader 类加载器也是Jav ...

  3. 分析JVM动态生成的类

    总结思考:让jvm创建动态类及其实例对象,需要给它提供哪些信息? 三个方面: 1.生成的类中有哪些方法,通过让其实现哪些接口的方式进行告知: 2.产生的类字节码必须有个一个关联的类加载器对象: 3.生 ...

  4. Emit动态生成代理类用于监控对象的字段修改

    利用Emit动态生成代理对象监控对象哪些字段被修改,被修改为什么值 被Register的对象要监控的值必须是Virtual虚类型 必须使用CreateInstance创建对象 必须使用DynamicP ...

  5. Hibernate、Mybatis 通过数据库表反向生成java类和配置

    一.通过MyEclipse生成Hibernate类文件和hbm.xml文件,或者annotation文件    (转载孙宇老师的文章) 二.Mybatis生成实体类和配置文件: myeclipse下生 ...

  6. JSP-讲解(生成java类、静态导入与动态导入)

    一.JSP技术简介 JSP是Java Server Page的缩写,它是Servlet的扩展,它的作用是简化网站的创建和维护. JSP是HTML代码与Java代码的混合体. JSP文件通常以JSP或J ...

  7. 使用.net core efcore根据数据库结构自动生成实体类

    源码 github,已更新最新代码 https://github.com/leoparddne/GenEntities/ 使用的DB是mysql,所有先nuget一下mysql.data 创建t4模板 ...

  8. c# 动态生成继承类并实现序列化特性

    项目来源 App传过来的字段是动态的,希望能保证扩展性,返回时,把所需要的字段与数据融合后再返回过去 数据是第3方来源的,但是序列化后的结果又希望能并列返回 如:App传过来 一个设备Id,客户Id等 ...

  9. 根据数据库表结构生成java类

    import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWrit ...

随机推荐

  1. 【心情】bjdldrz

    如果我对勇士的记忆停留在73胜10负,

  2. protobuf中会严重影响时间和空间损耗的地方

    http://blog.chinaunix.net/uid-26922071-id-3723751.html 当前项目中普遍用到GOOGLE 的一个开源大作PROTOBUF,把它作为网络应用层面的传输 ...

  3. 64位Oracle11g自带的sqldevelper无法启动

    原因:选择的jdk有问题 解决方法:由于Oracle自带的Sqldeveloper只支持32位的java运行环境,如果本机安装64位jdk,需要手动更改SqlDeveloper路径到32位的jdk即可 ...

  4. Oracle数据库零散知识05 -- 表创建,修改

    1.表的创建 Create table student02(sno number); 2.表的删除 Drop table student02; 3.表的重命名 Rename student02 to ...

  5. Notes on OpenSSL and Qt(ssl.pri,qsslocket_openssl_symbols.cpp)

    Libraries name of openssl? The "library" portion of OpenSSL consists of two libraries. On ...

  6. 容易遗忘的JS知识点整理—hasOwnProperty相关

    为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty方法.hasOwnProperty 是 JavaScrip ...

  7. 【22.70%】【codeforces 591C】 Median Smoothing

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  8. 还是Qt 通过stylesheet或者palette设置背景色的问题

    关于Qt,设置一个widget的背景色后,希望子对象不受影响. 很久以前在QtForum上问过一个问题:http://www.qtforum.org/post/94103/setting-backgr ...

  9. Dropout 理论基础与实战细节

    Dropout: A Simple Way to Prevent Neural Networks from Overfitting 对于 dropout 层,在训练时节点保留率(keep probab ...

  10. 【16.52%】【codeforces 733C】Epidemic in Monstropolis

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...