什么是自定义产品属性,文件属性没有自定义

2020-10-12 阅读 吴康成整理

内容简介:怎样设置属性一般来说,在。Net中,可以使用type.get custom attributes获取类的自定义属性,使用propertyinfo.getcustomattr自定义商品属性是什么意思...

一般来说,在.net中可以使用Type.GetCustomAttributes获取类上的自定义属性,可以使用PropertyInfo.GetCustomAttributes获取属性信息上的自定义属性。

下面以定义一个简单数据库表的映射实体类来说明相关的使用方法,基于自定义类属性和自定义类中的属性的自定义属性,可以方便的进行类标记和类中属性的标记创建一个类的自定义属性,用于标识数据库中的表名称,需要继承自Attribute类:代码如下:[AttributeUsage(AttributeTargets.Class,Inherited=false,AllowMultiple=false)]publicsealedclassTableAttribute:Attribute{privatereadonlystring_TableName=;publicTableAttribute(stringtableName){this._TableName=tableName;}publicstringTableName{get{returnthis._TableName;}}}创建一个属性的自定义属性,用于标识数据库表中字段的名称,需要继承自Attribute类:代码如下:[AttributeUsage(AttributeTargets.Property,Inherited=false,AllowMultiple=false)]publicclassFieldAttribute:Attribute{privatereadonlystring_FieldName=;///数据库的字段名称privateSystem.Data.DbType_Type=System.Data.DbType.String;///数据库的字段类型publicFieldAttribute(stringfieldName){this._FieldName=fieldName;}publicFieldAttribute(stringfieldName,System.Data.DbTypetype){this._FieldName=fieldName;this._Type=type;}publicstringFieldName{get{returnthis._FieldName;}}publicSystem.Data.DbTypeType{get{returnthis._Type;}}}创建一个数据实体基类:代码如下:publicclassBaseEntity{publicBaseEntity(){}///summary///获取表名称////summary///returns/returnspublicstringGetTableName(){Typetype=this.GetType();object[]objs=type.GetCustomAttributes(typeof(TableAttribute),true);if(objs.Length=0){thrownewException(实体类没有标识TableAttribute属性);}else{objectobj=objs[0];TableAttributeta=(TableAttribute)obj;returnta.TableName;//获取表名称}}///summary///获取数据实体类上的FieldAttribute////summary///paramname=propertyName/param///returns/returnspublicFieldAttributeGetFieldAttribute(stringpropertyName){PropertyInfofield=this.GetType().GetProperty(propertyName);if(field==null){thrownewException(属性名propertyName不存在);}object[]objs=field.GetCustomAttributes(typeof(FieldAttribute),true);if(objs.Length=0){thrownewException(类体属性名propertyName没有标识FieldAttribute属性);}else{objectobj=objs[0];FieldAttributefieldAttribute=(FieldAttribute)obj;fieldAttribute.FieldValue=field.GetValue(this,null);returnfieldAttribute;}}}创建数据实体:代码如下:[Table(Wincms_Dictionary)]///映射到数据库的Wincms_Dictionary表publicclassWincms_Dictionary:BaseEntity{privateint_DictionaryId;publicWincms_Dictionary(){}[Field(DictionaryId,DbType.Int32)]///映射到数据库的Wincms_Dictionary表中的字段publicintDictionaryId{get{returnthis._DictionaryId;}set{this._DictionaryId=value;}}}///基于实体类获取实体对应的表名称和字段名称publicclassTest{publicstaticvoidmain(string[]args){Wincms_Dictionarydict=newWincms_Dictionary();Console.WriteLine(表名称:GetTableName(dict));Console.WriteLine(字段名称:GetFieldName(dict,DictionaryId));Console.Read();}///获取实体表名称publicstaticstringGetTableName(BaseEntityentity){returnentity.GetTableName();}///获取实体字段名称publicstaticstringGetFieldName(BaseEntityentity,stringpropertyName){FieldAttributefieldAttribute=entity.GetFieldAttribute(propertyName);returnfieldAttribute.FieldName;}}输出结果为:代码如下:表名称:Wincms_Dictionary字段名称:DictionaryId

作者给您推荐的内容
  1. 通过配置来设置关于校园网访问地址流量控制方法校园网接入受限网站的实验目的:只能登录http:特定的pcc23pcc通过以下步骤完成了pcc23pc1的以太网拓扑解析...

  2. 怎样设置qq红包密码呢?下面小编来教大家。01、首先,我们登陆我们的QQ,然后点击一个想要发红包的好友;02、弹出的界面,我们点击发消息;03、弹出的界面,我们点...

  3. ps批量调色风格:夏日小清新;主题:路边夏日;简单的方式营造夏日清新美丽的身材,粗犷实用ps调色规律...

  4. 如何解决无法添加新字体控制面板无法安装新字体的解决方案。在XP系统下,很多朋友可能遇到过这样的情况:当你想安装字体时,当你把字体复制到C:windowsfonts时如何解决"无法新增字体"问题,没...

  5. 在使用Windows 10工作时会遇到形形色色的问题,比如需要关机清理虚拟内存。那么如何设置呢?下面小编与你分享具体步骤和方法。01、启动Windows10操作系统,如图所示。点击任务栏"开始"按钮,用于...

  6. m.2固态硬盘固态硬盘和硬盘有什么区别?SSD和HDD有多大区别?与HDD相比,SSD具有以下明显的优势:SSD与HDD图表相比,在数据读取速度、地震容、功耗、运行声音、发热固态硬盘分区...

  7. 今天小编要和大家分享的是苹果6怎么刷机,希望能够帮助到大家。01、首先在开始菜单栏中找到爱思助手并点击它,如下图所示。02、然后用数据线连接苹果设备到电脑,如下图所示。03、接着点...

  8. wps文档添加附件1。打开电子表格。要向电子表格添加附件,请单击“插入”菜单中的附件。2。打开窗口以查找要添加到计算机上的附件,然后将其插入,以便我们可以看到插入的文件附...

  9. 电脑的蓝牙图标不见了怎么找出呢?下面小编来教大家。01、首先,我们打开我们的电脑,然后我们点击开始,之后我们点击弹出界面中的设置;02、然后我们点击设备;03、之后我们将...

  10. undefined网站网易科技讯9月5日,据VentureBeat报道,根据应用商店的使用情况,苹果今天发布了最新数据,数据显示,IOS 12正式发布还不到一个月,IOS 11也在合undefined啥意思...