[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; }
可以获取响应的信息。