博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定属性的描叙信息类
阅读量:4992 次
发布时间:2019-06-12

本文共 4349 字,大约阅读时间需要 14 分钟。

[PropertyDescription("物料编号", ProperVlaue = "MATERIAL_ID", DefaultValue = "MaterialId")]        public int MATERIAL_ID { get; set; }

 

用来自定义属性的描叙信息,该属性信息可以通过反射获取,自定义的类如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;using System.Collections;namespace SKY.DEFINITION{     /// 
/// 范小军
///     public enum EnumDBFieldUsage    {        ///         /// 未定义。        ///         None = 0x00,        ///         /// 用于主键。        ///         PrimaryKey = 0x01,        ///         /// 用于唯一键。        ///         UniqueKey = 0x02,        ///         /// 由系统控制该字段的值。        ///         BySystem = 0x04    }    ///     /// 用来获取属性描述信息的类    /// 范小军    /// 2012-01-05    ///     [AttributeUsage(AttributeTargets.Property, Inherited = true)]    public class PropertyDescriptionAttribute : Attribute    {        EnumDBFieldUsage m_usage;        string m_strFieldName;        string m_strDescription;        string m_strProperName;        object m_defaultValue;        public PropertyDescriptionAttribute(string strFieldName, object defaultValue, EnumDBFieldUsage usage, string strDescription)        {            m_strFieldName = strFieldName;            m_defaultValue = defaultValue;            m_usage = usage;            m_strDescription = strDescription;        }        public PropertyDescriptionAttribute(string strFieldName,string strProperName, object defaultValue, EnumDBFieldUsage usage, string strDescription)        {            m_strFieldName = strFieldName;            m_strProperName = strProperName;            m_defaultValue = defaultValue;            m_usage = usage;            m_strDescription = strDescription;        }        public PropertyDescriptionAttribute(string fieldName)            : this(fieldName, null, EnumDBFieldUsage.None, null)        { }        public PropertyDescriptionAttribute(string fieldName, EnumDBFieldUsage usage)            : this(fieldName, null, usage, null)        { }        // 获取该成员映射的数据库字段名称。        public string FieldName        {            get            {                return m_strFieldName;            }            set            {                m_strFieldName = value;            }        }        // 获取该字段的默认值        public object DefaultValue        {            get            {                return m_defaultValue;            }            set            {                m_defaultValue = value;            }        }        // 获取该字段的默认值        public string  ProperVlaue        {            get            {                return m_strProperName;            }            set            {                m_strProperName = value;            }        }    }}

使用方法如下:

[PropertyDescription("物料编号", ProperVlaue = "MATERIAL_ID", DefaultValue = "MaterialId")]        public int MATERIAL_ID { get; set; }

 可以通过前一章的反射类,获取相应的信息,方法如下:

///         /// 获取一个属性的类型        ///         ///         ///         ///         /// 
public string getPropertyType(string NameSpacestr, string PropertyName) { Type t = Type.GetType(NameSpacestr); string tempvalue = ""; foreach (PropertyInfo pi in t.GetProperties(BindingFlags.Instance | BindingFlags.Public)) { List
lpropername = new List
(); List
ldefault = new List
(); string temp = ""; object[] attrs = pi.GetCustomAttributes(typeof(PropertyDescriptionAttribute), true); if (attrs.Length == 1) { PropertyDescriptionAttribute attr = (PropertyDescriptionAttribute)attrs[0]; lpropername.Add(attr.ProperVlaue); ldefault.Add(attr.DefaultValue.ToString()); } for (int i = 0; i < lpropername.Count; i++) { if (ldefault[i].Equals(PropertyName)) { temp = lpropername[i]; } } if (pi.Name.Equals(temp)) { tempvalue = pi.PropertyType.Name.ToString(); break; } } return tempvalue; }

 可以获取响应的信息。

 

 

转载于:https://www.cnblogs.com/fanxiaojun/archive/2012/03/08/2385693.html

你可能感兴趣的文章
smartctl工具应用(转载整理)
查看>>
控件数据绑定总结
查看>>
HTTP协议
查看>>
Vue 框架-09-初识组件的应用
查看>>
.Net core 在类库中获取配置文件Appsettings中的值
查看>>
[转载]sublime用法精华
查看>>
《甄嬛传》影评(整理)
查看>>
数的位数
查看>>
MySQL合并多行
查看>>
[openstack] RDO Quickstart
查看>>
[转载]struts2 中的 addActionError 、addFieldEr
查看>>
[转载]我的PMP复习备考经验谈(上篇)—— 一本关于PMP备考的小指南
查看>>
Mysql命令集
查看>>
记java应用linux服务单个CPU使用率100%分析
查看>>
将文件字节输出流写入到文本中
查看>>
Linux编程之给你的程序开后门
查看>>
Ubuntu下Hadoop的安装和配置
查看>>
VS2010中生成遇到的 web.config 问题
查看>>
Nginx安装部署(反向代理与负载均衡)
查看>>
2018年最新小程序一键智能生成平台限时限量销售!
查看>>