您的当前位置:首页正文

C# 的反射_1特性简单介绍

2024-12-02 来源:个人技术集锦

反射,可以理解为通过一定的方法获得类或者对象的详细信息,从而了解对象的内部信息,或者程序集的内部结构,可以动态的创建对象并执行其中的方法。

C#  或者   java  这种类型的语言才具有反射的功能,面向底层的C是不具有反射功能的。

C# 中反射所使用到的类,Type     ,          对象名.GetType() ;   或者  typeof(对象名) ; , 能够获得对象的类型

 案列

namespace{

         class  program{

         static  void  Main  (string   args){

             object     ol = 123  ; 

             Type    t =  ol.GetType() ;

              Type  t1 = typeof( ol  ) ; 

              Console.Writeline(  t  );  /  / 输出 t  或者  t1  都 可以获得 t  或 t1  的具体类型

              Type   personType =  typeof(Person);  

             MethodInfo[ ] mdInfo  =    personType.GetMethods();  /  / 返回所有的公有方法  (可以用foreach遍历)

            /  / personType.GetMethods( BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance );  //加筛选条件可以访问私有字段

             Type  bsType =  personType.BaseType(); / /  可以获得该类型的父类,返回的是Type类型,可以继续 .BaseType(); 获取父类

             FieldInfo[ ]  fi = personType.GetFields(); / / 获得公有的字段信息,同样加筛选条件可以访问私有的字段信息。

             PropertyInfo[ ] pi =  personType.GetProperties(); / / 获得公有的属性信息,同样加筛选条件可以访问私有的字段信息。 

   }

 }

  public   class  Person{    /  / Psrson中有公有和私有的字段,属性,方法,可以通过反射的方式来获得其中的私有的部分  

             public  int  id{set ; get ;}

             public string name{set; get; }

             privae string  age{set ; get ;}

             private string sex{set ; get ;}

             public int   publicInt =0;

             private int  privateInt = 0;

             public  void PublicHello(){ Console.WriteLine(  " public  function " );  }

             private void PrivateHello(){ Console.WriteLine(" private function " );  }

}

}

  

 

显示全文