本篇文章的主要内容是向人人细致的引见在C#中什么是反射,具有肯定的参考作用,愿望对人人有所协助
【引荐课程:C#教程】
反射是什么
反射指的是供应封装顺序集、模块和范例的对象(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#中反射是什么?的细致内容,更多请关注ki4网别的相干文章!