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
  • 相关阅读:
    springmvc介绍
    mybatis中的动态sql应用
    mybatis中表的关联
    mybatis分页
    聚类评估指标系列(二):准确率和F值
    混淆矩阵,准确率,召回率,F-score,PR曲线,ROC曲线,AUC
    聚类评估指标系列(一):标准化互信息NMI计算步骤及其Python实现
    numpy.where() 用法详解
    互信息Mutual Information
    转:Prewitt算子、Sobel算子、canny算子、Lapacian算子
  • 原文地址:https://www.cnblogs.com/Jacob-Wu/p/9301843.html
Copyright © 2011-2022 走看看