网站建设资讯

NEWS

网站建设资讯

c#中反射指的是什么-创新互联

这篇文章主要介绍了c#中反射指的是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

创新互联是一家企业级云计算解决方案提供商,超15年IDC数据中心运营经验。主营GPU显卡服务器,站群服务器,成都机柜租用,海外高防服务器,服务器机柜,动态拨号VPS,海外云手机,海外云服务器,海外服务器租用托管等。

反射是什么

反射指的是提供封装程序集、模块和类型的对象(Type类型)。可以使用反射动态创建类型的实例,将类型绑定到现有的对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了特性,可以利用反射对它们进行访问。

反射的使用场景

需要访问程序元数据的特性。

检查和实例化程序集中的类型。

在运行时构建新类型。

使用System.Reflection.Emit中的类。

执行后期绑定,访问在运行时创建的类型的方法

如何使用反射获取类型

获得类型信息有两种方法,一种是得到实例对象,另一种是通过Type.GetType以及Assembly.GetType方法

得到实例对象

在这个方法中仅仅得到的是这个实例对象,得到的方式也许是一个object的引用,也许是一个接口的引用,但是并不知道它的确切类型,如果需要更进一步的了解,就可以通过调用System.Object上声明的方法GetType来获取实例对象的类型对象,比如在某个方法内,我需要判断传递进来的参数是否实现了某个接口,如果实现了,则调用该接口的一个方法:

…
public  void  Process(  object  processObj  ){
Type  t  =  processsObj.GetType();
if(  t.GetInterface(“ITest”)  !=null  )                    
…}…

Type.GetType以及Assembly.GetType方法

另外一种获取类型的方法是通过Type.GetType以及Assembly.GetType方法,如:

Type  t  =  Type.GetType(“System.String”);

需要注意的是,要查找一个类,必须指定它所在的装配件,或者在已经获得的Assembly实例上面调用GetType。本装配件中类型可以只写类型名称,另一个例外是mscorlib.dll,这个装配件中声明的类型也可以省略装配件名称(.Net装配件编译的时候,默认都引用了mscorlib.dll,除非在编译的时候明确指定不引用它),比如:

System.String是在mscorlib.dll中声明的,上面的Type  t  =  Type.GetType(“System.String”)是正确的。

System.Data.DataTable是在System.Data.dll中声明的,那么Type.GetType(“System.Data.DataTable”)就只能得到空引用。
所以

Type t = Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0,  
Culture=neutral,  PublicKeyToken=b77a5c561934e089");

感谢你能够认真阅读完这篇文章,希望小编分享c#中反射指的是什么内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!


文章题目:c#中反射指的是什么-创新互联
本文URL:http://njwzjz.com/article/ggodp.html