C# Assembly反射和特性

转载请注明出处!

什么是反射?

    反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等程序集内部的信息。使用反射可以看到一个程序集内部的接口、类、方法、字段、属性、特性等等信息。

什么是Assembly(程序集)?

    Assembly是一个包含来程序的名称,版本号,自我描述,文件关联关系和文件位置等信息的一个集合。在.net框架中通过Assembly类来支持,该类位于System.Reflection下,物理位置位于:mscorlib.dll。

Assembly能干什么?

通过Assembly可以动态加载程序集,并查看程序集的内部信息,其中最常用的就是Load()这个方法。

Assembly assembly=Assembly.Load("MyAssembly"); 

利用Assembly的object CreateInstance(string) 方法可以反射创建一个对象,参数0为类名。?

其他常用的类:?

Assembly 通过此类可以加载操纵一个程序集,并获取程序集内部信息 

EventInfo 该类保存给定的事件信息 

FieldInfo 该类保存给定的字段信息 

MethodInfo 该类保存给定的方法信息 

MemberInfo 该类是一个基类,它定义了EventInfo、FieldInfo、MethodInfo、PropertyInfo的多个公用行为 

Module 该类可以使你能访问多个程序集中的给定模块 

ParameterInfo 该类保存给定的参数信息       

PropertyInfo 该类保存给定的属性信息??

一、首先举例说明一下Assembly的简单应用?

查看类的程序集信息?:

C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

 

 二、相关反射机制

C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

1、查看MyClass类中定义的信息
C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客
C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

 运行结果:

C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

2、使用Assembly加载项目程序集和确定的类

C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

运行结果:
C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

3、通过MethodInfo获取方法,传递参数并执行方法
C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

运行结果:
C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

4、通过PropertyInfo查找属性,获取属性值和设置属性值
C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

运行结果:
C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客


5、通过FieldInfo查找字段,获取字段值和设置字段值(与PropertyInfo类似)

C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

运行结果:

C Assembly反射和特性 - IQ007伟哥 - IQ007伟哥的博客

7、注意,程序集中获取内部的接口、类、方法、字段、属性、特性等信息时,只能获取public声明的信息。

扩展:

可以将项目的程序集信息封装到dll文件中,然后通过引用dll文件,利用反射机制来获取封装的程序集?信息。具体操作大家可以看一下我的上一篇博文:

http://iq007.blog.163.com/blog/static/26554201920168115940866/

小弟也是刚入门C#不久,把学习内容分享给大家,若有不对,望大家指正……最后祝大家学习愉快……嘿嘿?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值