C#反射与自定义属性

Posted KenshinCui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#反射与自定义属性相关的知识,希望对你有一定的参考价值。

      具体什么是反射就不再多解释了,通俗一点就是可以由类型得到其相关的信息(事实上如果是方法的话我们还可以去调用)。好了先看一看几个例子:

 

上面列举了基本上所有常用的反射方面的内容,当然上面的例子都是在已经存在相应的类的基础上,如果这个类我是在一个dll类库中怎么办呢?请看下面的例子:

 

这里提供了两种方法。

       好了,如果看看上面的例子我想对反射也有了初步的了解,但是怎么去用呢。对了,在工厂模式中我们用到了,还有什么呢?那就是反射和自定义属性的结合,这个太重要了。如果我们有这样的需求,需要自己来做个orm映射,实体类很简单,但是如果知道相应的表的信息呢?相信很多用过orm框架的朋友都知道我们很多时候需要在实体类和相关属性上做标记属性,对了其实我们是通过比较熟悉来得到相应的信息的,更准确的说是我们通过反射得到实体类的信息,进而通过GetCustomAttributes方法得到相应的标记属性的信息,而这信息信息我们之前已经写在了比较属性中。我们来看看具体的例子(自定义属性不再多说,这里主要是反射和自定义属性的结合。):

两个自定义属性:

相应的获得方法和测试方法

多余的话我就不说了注释很明白,或许有朋友说这样的代码没有用啊,其实如果我们对DisplaySelfAttribute进行修改例如我们修改成delete方法,这样我么有了表名,我们就可以构造sql语句执行删除了(当然在那之前需要多一个属性就是判断是否是主键)。这样的话自己做个orm框架也是不成问题的!

以上是关于C#反射与自定义属性的主要内容,如果未能解决你的问题,请参考以下文章

Java反射与自定义注解

java注解与自定义注解

java注解与自定义注解

C#反射机制详解

(转)C#反射机制详解

.Net C# 反射,了解只需3分钟