Attribute
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; namespace LotteryTicket.Entity { [AttributeUsage(AttributeTargets.Property | AttributeTargets.Class | AttributeTargets.Field, AllowMultiple = true, Inherited = false)] public class XmlNodeNameAttribute : Attribute { private string _Name; public XmlNodeNameAttribute(string XmlNodeName) { this._Name = XmlNodeName; } public static string GetNodeName(Type T, string Name) { if (T.Name == Name) { object[] Ats = T.GetCustomAttributes(false); foreach (object A in Ats) { if (A.GetType() == typeof(XmlNodeNameAttribute)) { return ((XmlNodeNameAttribute)A)._Name; } } } MemberInfo[] Mis = T.GetMember(Name); foreach (MemberInfo Mi in Mis) { if (Mi.IsDefined(typeof(XmlNodeNameAttribute), false)) { object[] Attrs = Mi.GetCustomAttributes(false); foreach (object Attr in Attrs) { if (Attr.GetType() == typeof(XmlNodeNameAttribute)) { XmlNodeNameAttribute Att = (XmlNodeNameAttribute)Attr; return Att._Name; } } } } return "未标记XmlNodeNameAttribute"; } #region 废弃 - 已注释 //public static XElement CreateCommonXElement<T>(T Entity) //{ // XElement X = null; // object[] Ats = Entity.GetType().GetCustomAttributes(false); // foreach (object A in Ats) // { // if (A.GetType() == typeof(XmlNodeNameAttribute)) // { // X = new XElement(XmlNodeNameAttribute.GetNodeName(Entity.GetType(), Entity.GetType().Name)); // } // } // PropertyInfo[] Props = Entity.GetType().GetProperties(); // foreach (PropertyInfo Prop in Props) // { // if (Prop.IsDefined(typeof(XmlNodeNameAttribute), false)) // { // string XmlNodeName = string.Empty; // object[] Attrs = Prop.GetCustomAttributes(false); // foreach (object Attr in Attrs) // { // if (Attr.GetType() == typeof(XmlNodeNameAttribute)) // { // XmlNodeNameAttribute Att = (XmlNodeNameAttribute)Attr; // XmlNodeName = XmlNodeNameAttribute.GetNodeName(typeof(T), Prop.Name);//读取XmlNodeAttribute节点名称 // } // } // X.Add(new XElement(XmlNodeName, Prop.GetValue(Entity, null))); // } // } // return X; //} #endregion } }