zoukankan      html  css  js  c++  java
  • 特性(Attribute)

    1.枚举获取特性,转换值

    using System;
    using System.Reflection;
    
    namespace MyAttribute
    {
        public static class HelloExtesion
        {
            public static string GetStr(this Enum e)
            {
                Type type = typeof(UserState);
                FieldInfo p = type.GetField(e.ToString());
                if (p.IsDefined(typeof(CSAttribute), true))
                {
                    CSAttribute cs = p.GetCustomAttribute(typeof(CSAttribute)) as CSAttribute;
                    return cs.Name;
                }
                else
                {
                    return e.ToString();
                }
            }
        }
        public enum UserState
        {
            [CS("富人")]
            Rich = 1,
            [CS("一般人")]
            Normal = 2,
            //[CS("穷人")]
            Poor = 3,
        }
        public class CSAttribute : Attribute
        {
            public string Name { set; get; }
            public CSAttribute(string Name)
            {
                this.Name = Name;
            }
        }
    }
    View Code

    2.特性验证字段格式

    using HomeWork1.AttributeModels;
    using System;
    using System.Reflection;
    
    namespace HomeWork1.Tool
    {
        public static class ValidateTool
        {
            public static void ValidateEntity<T>(this T t) where T : class
            {
                Type type = typeof(T);
                foreach (var prop in type.GetProperties())
                {
                    if(prop.IsDefined(typeof(AbstractAttribute),true))
                    {
                        foreach (AbstractAttribute item in prop.GetCustomAttributes(typeof(AbstractAttribute)))
                        {
                            string s = item.Validate(prop.GetValue(t));
                            if (!string.IsNullOrEmpty(s))
                            {
                                throw new Exception($"{prop.GetChinese()}({prop.Name}):{s}");
                            }
                        }
                    }
                }
            }
            public static string GetColumnName(this PropertyInfo Prop)
            {
                if (Prop.IsDefined(typeof(ColumnAttribute), true))
                {
                    return (Prop.GetCustomAttribute(typeof(ColumnAttribute)) as ColumnAttribute).Name;
                }
                return Prop.Name;
            }
            public static string GetTableName(this Type type)
            {
                if (type.IsDefined(typeof(TableNameAttribute), true))
                {
                    return (type.GetCustomAttribute(typeof(TableNameAttribute)) as TableNameAttribute).Name;
                }
                return type.Name;
            }
            public static string GetChinese(this PropertyInfo Prop)
            {
                if (Prop.IsDefined(typeof(ChineseAttribute), true))
                {
                    return (Prop.GetCustomAttribute(typeof(ChineseAttribute)) as ChineseAttribute).Name;
                }
                return Prop.Name;
            }
        }
    }
    View Code
  • 相关阅读:
    使用iScroll时,input等不能输入内容的解决方法
    用jquery 写的类似微博发布的效果
    jq 中each的用法 (share)
    Android SDK 安装中组件的离线安装方法 (share)
    HTML5开发手机应用viewport的作用
    Android开发环境搭建及配置phoneGap
    flipsnap手机屏幕水平滑动框架
    解读网站PR值
    文档碎片
    解读SEO 黑帽白帽 (share)
  • 原文地址:https://www.cnblogs.com/Jacob-Wu/p/9301843.html
Copyright © 2011-2022 走看看