zoukankan      html  css  js  c++  java
  • c#通过反射获取类上的自定义特性

    http://www.cnblogs.com/jeffwongishandsome/archive/2009/11/18/1602825.html

    下面这个是笔者在以前的一个项目中用到的。当时是为了在导出excel报表的时侯,通过自定义特性,包含一些可配置的特性在里面。具体的操作excel不是本文重点,本文不会多做说明。下面只写个示例,简单说明一下如何通过反射获取自定义特性。示例只在类和属性上使用了自定义特性。读者可以按照实际的项目需求,合理使用自定义特性。

    1、实现实体自定义特性,继承自Attribute类


       /// <summary>
        
    /// 自定义特性 属性或者类可用  支持继承
        
    /// </summary>
        [AttributeUsage(AttributeTargets.Property | AttributeTargets.Class, Inherited = true)]
        
    public class EnitityMappingAttribute : Attribute
        {
            
    private string tableName;
            
    /// <summary>
            
    /// 实体实际对应的表名
            
    /// </summary>
            public string TableName
            {
                
    get { return tableName; }
                
    set { tableName = value; }
            }

            
    private string columnName;
            
    /// <summary>
            
    /// 中文列名
            
    /// </summary>
            public string ColumnName
            {
                
    get { return columnName; }
                
    set { columnName = value; }
            }
        }

    注释中我已经写的很清楚,自定义特性中的属性一个是实体实际对应的数据库表名,一个是对应的中文列名称。
    2、在实体中使用自定义特性

    Code

    3、显示自定义特性

    Code
    ps:在获取自定义特性的地方,其实就是利用了GetCustomAttributes方法,这个没什么好说的。在实际开发的时候,通过反射的特性可以省却我们很多繁琐的事情,真像那句话说的,“反射反射,程序员的快乐”。不过,反射的性能问题还是需要格外注意的,比如,今天上午看到老赵的“Attribute操作的性能优化方式”才发现原来还有那么多内涵。 
    最后,再ps,某位jj在我的博客里寻人啊,见“这篇”和“这篇”的留言(注意日期,就是今天下午),关心一下。有认识的xdjm们通知一下这位大姐啊,谢谢热心的你鸟。


    作者:Jeff Wong

  • 相关阅读:
    js 模拟表单提交下载文件
    vue 刷新子组件方法解决使用v-if闪屏问题
    Java15-Tomcat&Servlet&HTTP&Request&Response
    JAVA26-SpringBoot-在线教育项目01
    20 Vue-ajax
    19 Vue-JQuery
    18 Vue-Json
    Java 20-Mybatis学习
    17 Vue-ES6语法之Promise、VueX、网络请求封装
    16 Vue-cli脚手架介绍与使用
  • 原文地址:https://www.cnblogs.com/zcm123/p/3184266.html
Copyright © 2011-2022 走看看