zoukankan      html  css  js  c++  java
  • 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
        }
    }
  • 相关阅读:
    201264
    asp.net 实现随机生成验证码
    数据库连接方式读取不到Excel数据值的解决方法
    如何对ArcSDE空间网格大小进行优化?
    坐标转换资料
    (转载)SDE命令行安装配置
    2008年的这些事儿
    注记多行显示问题的解决方法
    你的行为伤害了谁?
    oracle 数据备份(收藏)
  • 原文地址:https://www.cnblogs.com/liuwentian/p/3326674.html
Copyright © 2011-2022 走看看