“实体类”可不可以动态添加“字段”和“属性”

问题描述

“实体类”可不可以动态添加“字段”和“属性”???比如一个实体类,如下:publicclassEnergyTargetModel{publicstringEnergyYear{get;set;}publicstringEnergySum{get;set;}publicstringEnergyUnitArea{get;set;}publicstringEnergyEveryOne{get;set;}}功能:现在要根据参数“Sum”,给“EnergyTargetModel”类添加几个属性。1、如果“Sum”为“1”,那么“EnergyTargetModel”类不变。2、如果“Sum”为“2”,那么为“EnergyTargetModel”类添加属性“EnergyYear1、EnergySum1、EnergyUnitArea1、EnergyEveryOne1”。3、如果“Sum”为“3”,那么为“EnergyTargetModel”类添加属性“EnergyYear1、EnergySum1、EnergyUnitArea1、EnergyEveryOne1、EnergyYear2、EnergySum2、EnergyUnitArea2、EnergyEveryOne2、”。4、以此类推,动态为“EnergyTargetModel”类添加属性,并且确保动态修改后的类可以被实例化为List<EnergyTargetModel>实体集合。您是不是感觉这样的需求很怪异。。。应该怎样做呢???最好有实例可以参考。。。感激不尽。。。

解决方案

解决方案二:
通过定义实体集之间的关系可以实现吗???
解决方案三:
该回复于2012-08-06 10:36:29被版主删除
解决方案四:
给类加属性还是给类对象加属性?
解决方案五:
参阅System.Reflection.Emit命名空间难度相当大,楼主,挽尊。
解决方案六:
请问怎么给类对象添加属性?引用3楼的回复:

给类加属性还是给类对象加属性?

解决方案七:
额,类都编译好了还能添加吗?
解决方案八:
引用5楼的回复:

请问怎么给类对象添加属性?引用3楼的回复:给类加属性还是给类对象加属性?

你先告诉我,你添加了属性别人怎么用?反射吗?在设计时调用者根本不知道你有这个属性,C#毕竟不是动态语言。
解决方案九:
引用7楼的回复:

引用5楼的回复:请问怎么给类对象添加属性?引用3楼的回复:给类加属性还是给类对象加属性?你先告诉我,你添加了属性别人怎么用?反射吗?在设计时调用者根本不知道你有这个属性,C#毕竟不是动态语言。

所以我才问:给类加属性还是给类对象加属性?
解决方案十:
做几个具有有所属性的EnergyTargetModel类然后继承隐藏不要的属性
解决方案十一:
引用8楼的回复:

引用7楼的回复:引用5楼的回复:请问怎么给类对象添加属性?引用3楼的回复:给类加属性还是给类对象加属性?你先告诉我,你添加了属性别人怎么用?反射吗?在设计时调用者根本不知道你有这个属性,C#毕竟不是动态语言。所以我才问:给类加属性还是给类对象加属性?

给“类的对象”添加属性。。。
解决方案十二:
不知道DLR可不可以做这样子的需求~~~~
解决方案十三:
我们曾经有一个需求最后是用的依赖属性解决的,不过解决了之后带了其它设计上的问题,一直再考虑换方式去解决.如果楼主真的有兴趣的话可以自己实现一个依赖属性的整个结构,因为C#自身的依赖属性是有局限的,毕竟设计的出发点不一样.
解决方案十四:
用entityframework添加字段设置为可以为空。。随便你添加,不用修改任何代码。如果手写3层,添加字段要累死人呢。
解决方案十五:
System.Runtime.CompilerServices.ConditionalWeakTable可能能實現
解决方案:
如果只是一个EnergyTargetModel,为什么不用继承。如果有一堆的EnergyTargetModel,可以用组合。当然最好是用代码生成都给生成好。
解决方案:
加一个arraylist字段,随时添加
解决方案:
试试dynamic怎么样。
解决方案:
或者干脆把已知类型全都定义好继承EnergyTargetModel
解决方案:
感觉LZ的设计思想有问题。写程序写到这一步,就不要再考虑一个“完整”的实体类来装你的数据了。再说了,实体类本来是用来和数据库打交道的。你的动态实体类,难道要动态对应到某个表?宁可多写几个case多写几个ifelse来确定某个类。

时间: 2024-08-07 18:33:15

“实体类”可不可以动态添加“字段”和“属性”的相关文章

c#封装-新手,C#的类中有关添加字段和封装属性的问题

问题描述 新手,C#的类中有关添加字段和封装属性的问题 各位大神,我是一个学习c#的新手,我想请教一个问题,在一个类中如何定义一个私有字段,然后再对这个字段封装属性,比如字段-name,能把相关代码下写一下吗? 解决方案 class A{ private string _Name; public string Name { get { return _Name; } set { _Name = value; } }} 解决方案二: 但是,其实私有的后备字段不要写,上面的代码,在C# 3.0以上更

Javascript 创建类并动态添加属性及方法的简单实现_javascript技巧

JavaScript 是一种很强的面向对象的语言,支持创建实例之后再添加属性和方法,虽然是小技巧,用的时候容易忘记,今天写了一个很小的例子,记录在这里,仅供参考. function MyClass() { //This function is same as a constructer alert("New Object Created"); } //Creating Object var MyObject = new MyClass (); NewObject.prototype =

在python的类中动态添加属性与生成对象_python

本文将通过一下几个方面来一一进行解决       1.程序的主要功能       2.实现过程       3.类的定义       4.用生成器generator动态更新每个对象并返回对象       5.使用strip 去除不必要的字符       6.rematch匹配字符串       7.使用timestrptime提取字符串转化为时间对象       8.完整代码 程序的主要功能 现在有个存储用户信息的像表格一样的文档:第一行是属性,各个属性用逗号(,)分隔,从第二行开始每行是各个属

EF code first 实体类修改、添加、删除操作问题

问题描述 EF code first 实体类修改.添加.删除操作问题 EF code First 怎么来更新已存在的数据库结构? 比如:在实体类中我新添加了一个字段.修改字段名称或者类型.删除一个字段 等操作后我怎么更新到已存在的数据库对于表中去. 担心:我在持续开发中,改变了数据库的结构,如果这时候用户已经用以前的版本创建好数据库并且有了许多数据,假使我的修改只增加了一个表的一个可空列.而为此我只能重新创建数据库.请问有没有别的办法,能够把新的数据库结构在不损伤数据的情况下更新到部署好的环境中

如何在水晶报表中动态添加字段

原文:如何在水晶报表中动态添加字段 问题:水晶报表中,因为数据源的字段是不固定的,可否在运行时动态添加字段,就象在winform中动态添加控件一样?(更新:2003-11-05)--------------------------------------解决方案:用"公式字段"1.根据字段的最大数量,定义若干个"公式字段",FormulaFeild1.FormulaFeild2--,公式为空:2.把"公式字段"按顺序放在"详细资料&qu

原生sql hibernate-用原生sql查询 为什么实体类中存在该字段,但为什么还是报错列名无效

问题描述 用原生sql查询 为什么实体类中存在该字段,但为什么还是报错列名无效 这是dao层 ds = HibernateDataSource.getHibernateDataSource(); session = ds.getSession(); String sql1="SELECT CHANNEL_ID FROM JC_CHANNEL WHERE PARENT_ID='"+ channelId + "'"; SQLQuery sqlQuery1 = sessi

vs2005中 水晶报表如何动态添加字段呢?求救

问题描述 如题,水晶报表中的详细资料部分要在程序中用代码动态添加,也就是说显示的字段是未知的,在程序中控制,我应该怎么做呢?哪位兄弟给个例子??在线等... 解决方案 解决方案二:先定義一些字段,在代碼中對這些字段賦值,用推的方式看看解决方案三:阿泰的软件实用主义http://www.cnblogs.com/babyt/archive/2008/01/03/1024941.html解决方案四:在水晶报表里只能用公式.或函数来完成一些计算.统计.如果要加字段,建议在生成报表之前用数据库完成.解决方

c# list实体类循环过滤添加

问题描述 List<Person>m_Peron;PersonfirPer;firPer.name="张三";firPer.age=22;firPer.telephon="13957902234";我要添加N个Person实体到m_person里去,要过滤重复,如果name属性相同则不添加,这个怎么判断处理 解决方案 解决方案二:感觉这样写比纯粹的foreachm_Peron效率可能还高点List<Person>m_Peron=newList

发布一个实体类属性生成小工具,给开发加点料

做了很久的代码生成工具,基本上都是基于表生成实体类属性的,把数据库表的信息拿出来,然后之乎者也后生成一个标准的实体类,包含字段.属性.描述等东西. 是基于整个数据库生成整个框架代码的工具,如我的代码生成工具Database2Sharp(下载地址http://www.iqidi.com/Download/Database2SharpSetup.rar ),基本上能满足前期的框架代码生成. 不过后来在做一些非数据库的项目的实体类,还有一些不是基于表一一对应关系的实体类,写这些字段属性的代码就显得比较