zoukankan      html  css  js  c++  java
  • 泛型

    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 System;
    using System.Reflection;
    
    namespace MyAttribute
    {
        public static class DataValidate
        {
            public static void Validate<T>(this T t)
            {
                Type type = typeof(T);
                foreach (var item in type.GetProperties())
                {
                    if (item.IsDefined(typeof(AgeAttribute), true))
                    {
                        AgeAttribute ageAttribute = item.GetCustomAttribute(typeof(AgeAttribute)) as AgeAttribute;
                        if (!ageAttribute.Validate(item.GetValue(t)))
                        {
                            throw new Exception("年龄格式不正确");
                        }
                    }
                    if (item.IsDefined(typeof(QQAttribute), true))
                    {
                        QQAttribute qqAttribute = item.GetCustomAttribute(typeof(QQAttribute)) as QQAttribute;
                        if (!qqAttribute.Validate(item.GetValue(t)))
                        {
                            throw new Exception("QQ格式不正确");
                        }
                    }
                }
            }
        }
        public class Yun
        {
            public int Id { set; get; }
    
            [AgeAttribute(0, 100)]
            public int Age { set; get; }
            [QQAttribute(10001, 9999999999)]
            public long QQ { set; get; }
            public string Email { set; get; }
        }
    
        public class QQAttribute : Attribute
        {
            public long _min { set; get; }
            public long _max { set; get; }
            public QQAttribute(long min, long max)
            {
                this._min = min;
                this._max = max;
            }
            public bool Validate(object obj)
            {
                if (obj != null)
                {
                    if (long.TryParse(obj.ToString(), out long _Result))
                    {
                        return _Result >= _min && _Result <= _max;
                    }
                }
                return false;
            }
        }
    
        public class AgeAttribute : Attribute
        {
            public int _min { set; get; }
            public int _max { set; get; }
            public AgeAttribute(int min, int max)
            {
                this._min = min;
                this._max = max;
            }
            public bool Validate(object obj)
            {
                if (obj != null)
                {
                    if (Int32.TryParse(obj.ToString(), out int _Result))
                    {
                        return _Result >= _min && _Result <= _max;
                    }
                }
                return false;
            }
        }
    }
    DataValidate
  • 相关阅读:
    linux系统中给数据加上列号
    linux系统中统计指定类型文件大小的总和
    linux系统中awk命令求一列值的最大值、最小值、和及平均值
    R语言中找交集、并集、找不同、判断是否相同
    如何在字符串中加入回车换行,tab字符(关于字符串处理)
    BAPI几个有用的BAPI调用样例
    SAP 中国的咨询合作伙伴
    关于MRP的几个概念
    为什么有人不喜欢标准成本
    ERP系统中的存货计价过程
  • 原文地址:https://www.cnblogs.com/Jacob-Wu/p/9291776.html
Copyright © 2011-2022 走看看