.NET中的类型反射

       反射是一个运行库类型发现的过程。

       当我们要使用第三方的程序集,或运行库时,必须要在VS添加对该程序集的应用,才能使用该程序集或运行库。此过程就是反射的体现。

       因为第三方程序集,运行库中的类型,属性方法,接口等内容,在没有进行反射前,对于我们的程序而言是未知,所以我们或者VS平台,无法发现和使用它们。


       在.NET中,反射主要涉及 System.Reflection 命名空间与System.Type类。

       反射是发现一个运行库中的类型的过程,实际上就是发现并访问运行库中的类型的元数据。

       System.Type类中的很多方法可以检查某个类型的元数据。它们 返回类型都位于System.Reflection 命名空间中。

       所以我们要获得System.Type类的一个实例,之后就可以通过该实例去访问某个类型的元数据。


      获得System.Type类的一个实例的方法:

        1,使用System.Object.GetType()得到Type引用   ex:Sqlconnection  conn = new Sqlconnection(....) ; Type t = t.GetType();

        2, 使用typeof()得到Type引用                ex:   Type t = typeof(Sqlconnect);

        3,使用System.Type.GetType()得到Type引用           ex1: Type t = Type.GetType("Sqlconnection",false,true); (该函数有其他重载)

                                    必须要知道类型名字的字符串形式

                                     第一个BOOL值表示:是否在找不到结果的时候抛出异常;

                                     第二个BOOL表示:是否区分大小写


      上面三个方法的区别:1和2都需要,元数据编译时的信息;   1需要相应类型的实例;2只需要类型的名称就行;  3则不需要元数据编译时的信息

 


      反射方法(获取类型中有哪些函数方法): 

                 Sqlconnection  conn = new Sqlconnection(connectionstring) ;

                               //      获取type应用,Type是一个抽象类不能直接New

                 Type t = t.GetType(); 

                            //System.Type类中的方法可以检查某个类型的元数据,如:GetMethods()。它们返回类型大都位于System.Reflection 命名空间中,如:Method。

                  MethodInfo[]  mi = t.GetMethods();       



       反射字段和属性(获取类型中有哪些属性和字段)

                         Type t = typeof(Sqlconnect);
                         FieldInfo[] fieldName=  t.GetFields();


        反射接口(获取类型中有哪些接口)

                        Type t  =  Type.GetType("Sqlconnection",false,true); 
                        Type[] interfaces  =  t.GetInterfaces() ;


           注意:仔细观察不难发现 Type的方法返回的类型大都位于System.Reflection 命名空间中,GetMethods(),GetFields() 分别返回位于System.Reflection 命名空间中的MethodInfo[],FieldInfo[]。 当然也有例外:GetInterfaces()   返回的是Type[]。


           至此:我们明白为什么要反射,以及怎么反射一个类型的字段,方法,接口。以后进一步补充:反射,动态加载程序集。



参考书籍:《精通C#》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值