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

starryplayer 2012-07-25 09:05:33
“实体类”可不可以动态添加“字段”和“属性”???

比如一个实体类,如下:


public class EnergyTargetModel
{


public string EnergyYear
{
get;
set;
}

public string EnergySum
{
get;
set;
}

public string EnergyUnitArea
{
get;
set;
}

public string EnergyEveryOne
{
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>实体集合。



您是不是感觉这样的需求很怪异。。。 应该怎样做呢??? 最好有实例可以参考。。。 感激不尽。。。
...全文
3852 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜色镇歌 2014-01-23
  • 打赏
  • 举报
回复
或者干脆把已知类型全都定义好 继承EnergyTargetModel
夜色镇歌 2014-01-23
  • 打赏
  • 举报
回复
试试dynamic怎么样。
真相重于对错 2014-01-23
  • 打赏
  • 举报
回复
加一个arraylist字段,随时添加
showjim 2014-01-23
  • 打赏
  • 举报
回复
如果只是一个EnergyTargetModel,为什么不用继承。 如果有一堆的EnergyTargetModel,可以用组合。 当然最好是用代码生成都给生成好。
buyue__ 2014-01-23
  • 打赏
  • 举报
回复
System.Runtime.CompilerServices.ConditionalWeakTable可能能實現
xuguv 2014-01-23
  • 打赏
  • 举报
回复
感觉LZ的设计思想有问题。写程序写到这一步,就不要再考虑一个“完整”的实体类来装你的数据了。 再说了,实体类本来是用来和数据库打交道的。你的动态实体类,难道要动态对应到某个表? 宁可多写几个case 多写几个if else来确定某个类。
usestudio1 2012-08-15
  • 打赏
  • 举报
回复
用entity framework 添加字段设置为可以为空。。随便你添加,不用修改任何代码。如果手写3层,添加字段要累死人呢。
cheng2005 2012-08-15
  • 打赏
  • 举报
回复
我们曾经有一个需求最后是用的依赖属性解决的,不过解决了之后带了其它设计上的问题,一直再考虑换方式去解决.
如果楼主真的有兴趣的话可以自己实现一个依赖属性的整个结构,因为C#自身的依赖属性是有局限的,毕竟设计的出发点不一样.
xboxeer 2012-08-15
  • 打赏
  • 举报
回复
不知道DLR可不可以做这样子的需求~~~~
starrycheng 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:

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

引用 3 楼 的回复:

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

你先告诉我,你添加了属性别人怎么用?反射吗?
在设计时调用者根本不知道你有这个属性,C#毕竟不是动态语言。


所以我才问:给类加属性还是给类对象加属性?
[/Quote]

给“类的对象”添加属性。。。
SocketUpEx 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

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

引用 3 楼 的回复:

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

你先告诉我,你添加了属性别人怎么用?反射吗?
在设计时调用者根本不知道你有这个属性,C#毕竟不是动态语言。
[/Quote]

所以我才问:给类加属性还是给类对象加属性?


csnd唐长老 2012-08-06
  • 打赏
  • 举报
回复
做几个 具有有所属性的EnergyTargetModel 类 然后继承 隐藏不要的属性
cheng2005 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
请问怎么给类对象添加属性?

引用 3 楼 的回复:

给类加属性还是给类对象加属性?
[/Quote]
你先告诉我,你添加了属性别人怎么用?反射吗?
在设计时调用者根本不知道你有这个属性,C#毕竟不是动态语言。
wmg494005678 2012-08-06
  • 打赏
  • 举报
回复
额,类都编译好了还能添加吗?
c2606050113 2012-08-06
  • 打赏
  • 举报
回复
请问怎么给类对象添加属性?
[Quote=引用 3 楼 的回复:]

给类加属性还是给类对象加属性?
[/Quote]
GodDices 2012-08-06
  • 打赏
  • 举报
回复
参阅 System.Reflection.Emit 命名空间

难度相当大,楼主,挽尊。
SocketUpEx 2012-08-06
  • 打赏
  • 举报
回复
给类加属性还是给类对象加属性?


starrycheng 2012-07-25
  • 打赏
  • 举报
回复
通过定义实体集之间的关系可以实现吗???
Elasticsearch 简介 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。elasticSearch 的使用场景 1、在海量数据前提下,对数据进行检索。比如:京东,淘宝等电商项目课程目标: 1. 了解企业级搜索引擎2. 安装elasticsearch 课程目录: 01 课程介绍02 elasticsearch 简介03 elasticsearch 使用场景04 安装elasticsearch 之前先安装jdk05 安装elasticsearch06 测试elasticsearch是否安装成功 07 安装kibana08 elasticsearch 基本认识 以及添加索引和删除索引09 elasticsearch 添加查询数据10 elasticsearch 修改删除数据11 elasticsearch 有条件的查询12 分词子属性fuzzy查询13 elasticsearch 过滤使用14 elasticsearch 排序与分页15 elasticsearch 如何查询指定的字段16 elasticsearch 高亮显示17 elasticsearch 聚合18 elasticsearch mapping 概念19 elasticsearch 的中文词库20 elasticsearch 中文词库安装测试21 elasticsearch 中文词库的使用案例22 elasticsearch 自定义词库配置23 安装nginx 配置中文词库24 测试elasticsearch 自定义中文词库25 搭建项目父工程26 搭建项目bean-interface-common27 搭建search 的service web 项目28 测试项目是否能与elasticsearch联通29 创建数据库并搭建首页30 数据上传功能的实现类完成31 数据上传控制器完成32 dubbo 介绍以及安装zookeeper33 将数据从mysql 上传到elasticsearch 中34 elasticsearch查询功能分析35 编写业务需求的dsl 语句36 编写输入参数返回结果集的实体类37 实现类编写38 编写实现类中dsl 语句39 返回集结果转换40 结果测试41 测试通过输入查询条件并将数据显示到页面

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧