如何给字段加“标签”?

在项目中遇到这么一个问题。需要为某些指标设置为一级指标,二级指标等。例如name这个指标是一级指标,age这个指标是二级指标,其实说白了就是给实体中的字段加上“标签”。给字段加“标签”?好像不行吧。如果是一个类的话就好办了。让这个类继承一个标识接口,然后说继承了这个接口的就是一级指标,这样就行了,那么是字段怎么办呢?首先作为一个实体类,他中的字段和数据库中是对应的,所以不能做手脚,我们可以另外声明一个类,是实体类的标识加强版就行了。不多说了,看代码吧。

首先,先看看我的实体类。

 1     public class Person
 2     {
 3         public string Name { set; get; }
 4
 5
 6         public string Age { set; get; }
 7
 8
 9         public string Height { set; get; }
10
11
12         public string Weight { set; get; }
13     }

下面定义我的实体类的标识加强版

 1  public class Person_Level:Entity
 2     {
 3         public string Name1 { set; get; }
 4
 5
 6         public string Age2 { set; get; }
 7
 8         public string Height1 { set; get; }
 9
10
11         public string Weight2 { set; get; }
12     }

为什么要这么定义呢,加强版的字段很有特点,前面是是实体中的字段,后面是1或2,表示是一级字段或二级字段。下面我们要做的就是把实体中的数据传输到实体类的标识加强版就行了。那么现在我们的主角登场了-------反射。写一个方法,将实体中的数据传递到加强版中。

 private Person_Level translate(Person p,Person_Level level){
           PropertyInfo[] p_property= p.GetType().GetProperties();
           PropertyInfo[] level_property = level.GetType().GetProperties();

           for (int i = 0; i < p_property.Length; i++) { //原来的
               for (int j = 0; j < level_property.Length; j++) { //要使用的
                   if (level_property[j].Name.Contains(p_property[i].Name)) {

                       level_property[j].SetValue(level, (string)p_property[i].GetValue(p));
                   }
               }
           }
               return level;

        }

最后验证一下,能不能传递过去。

   [Test]
        public void translateTest1()
        {
            Person p = new Person();
            p.Age = "12";
            p.Name = "linyang";
            p.Weight = "75斤";
            p.Height = "186";
            Person_Level level = translate(p, new Person_Level());
            Console.WriteLine(level.Weight2);
            Console.WriteLine(level.Height1);
            Console.WriteLine(level.Age2);
            Console.WriteLine(level.Name1);
        }

显示的结果为:

75斤
186
12
linyang

实践证明获取到值了,也就实现了给实体加标示并且数据不改变的目的。

ps:本人今天才开园,是新手。仅仅是为了记录一下项目的心得体会,也是交流经验,但是写的功力有限,望请见谅

时间: 2024-11-21 01:39:26

如何给字段加“标签”?的相关文章

[功能改进]Live Writer发博支持&ldquo;建分类、加标签、写摘要&rdquo;

以前您在园子里用Windows Live Wirter发布博文是不是有以下三个不爽: 不爽1:如果想在发布随笔时新建分类并将随笔添加至该分类,需要先在博客后台添加分类,然后在Live Writer中刷新分类列表,并选择这个分类. 不爽2:如果想给随笔添加标签,需要在随笔发布后,进入博客后台进行标签的添加. 不爽3:如果想给发布随笔编写摘要,需要在随笔发布后,进入博客后台进行摘要的编写. 这次功能改进就是为大家消除这三个不爽. 如果你已经配置过Live Wirter,需要更新一下配置.点击下图中的

iOS给图片加标签(原创)

现在越来越多涉及到图片展示的应用都会加入标签功能,标签功能也越来越流行.想起以前做过的一个项目用到过这个功能,所以趁有时间,整理一下,仅供参考,不足之处还请多多指教. 1.标记界面 这个界面放一个UIImageView,宽高比例1:1.进入这个界面之前,图片建议是裁剪成1:1,这个比例有利于标签的展示.这个界面代码就不用展示了. 2.加标签按钮 我们项目中是将标签分为两类,文字标签和地理位置标签,基本上是相同的.按钮的布局可以参考我的,也可以自定义. - (void)setupButton {

Oracle、Mysql、SqlServer创建表和给表和字段加注释

一.Oracle --创建表 create table test ( id varchar2(200) primary key not null, sort number, name varchar(200) ) --字段加注释 comment on column test.id is 'id'; comment on column test.sort is '序号'; --表加注释 comment on table test is '测试表'  二.Mysql --创建表 create tab

msyql 移动某一列数据到某列 &amp; 字段加前缀

#移动数据 UPDATE dcs_organize_user AS a, dcs_organize_user AS b SET a.SHORTTELNO=b.USERTELNO WHERE a.id=b.id; #字段加前缀 UPDATE dcs_organize_user SET USERTELNO=CONCAT('0038089819',USERTELNO);

MySQL为某字段加前缀、后缀

在开发过程中,可能会遇到加前缀或者后缀的情况.比如为视频添加路径时,如果手动加起来肯定慢,而且比较不符合程序员的特点,我们就应该能让程序跑就不会手动加. 使用UPDATE sql 语句:update vod set path=concat('hello',path,'world') where id>0; vod是数据表名,path是你要更改的字段名,hello是要加的前缀,world是要加的后缀. 如果只想加前缀便写成.... path=concat('hello',path) ....同理后

html5学习系列——简介加标签

html5 的新特性: (1)用于绘画的canvas元素 (2)用于媒介回放的video和audio元素 (3)对本地离线存储有更好的支持 (4)新的特殊内容元素 (5)新的表单控件. 旧标签: (1)a标签 作用:超链接,如果没有href属性,就仅仅是一个超链接的占位符. 属性: href:链接的目标url; hreflang:规定目标url的基准语言 media:url的媒介类型,默认值为all: ping:由空格分隔的url列表: rel:规定当前文档与目标 URL 之间的关系: targ

百度地图笔记_多边形覆盖物区域加标签

给多边形区域加上标签,提供标签编辑和删除功能,效果图如下: 1.添加测试数据,包括3个多边形区域,3个标注标识多边形标签的大概显示位置 /*-----------------------创建3个多边形-------------------------------*/ var polygon1 = new BMap.Polygon([ new BMap.Point(121.25266, 31.004538), new BMap.Point(121.252696, 31.000576), new B

缓存加标签

<?php #缓存支持TAG标签实现 #为对TAG做分散存储,SO,TAG标签量不能太. $key="1000"; $val=array(/*big data*/); $tags=array("a","b"); $tag_key="my_tags_key"; #设置 $cval=array( $val, $tags ); $tagval=cache_get($tag_key); if(!is_array($tagval)

null类型的字段加1

很高兴今天学到了一种新方法. 数据库中字段类型为Long ,值可能为null,也可能是某一数.因此对该字段数值进行 +1操作时需要判断该值是null还是数值. 同时实现更新操作.具体如下: update content set hits =           case when hits is null          then 1          else hits+1           end          where id= 123456 还有另外一种方式,先判断值,若为nul