C#记录五——反射

反射

反射可以取得一个程序集有哪些类
也可以取得一个类有哪些属性,方法,字段等

定义一个基本类

  class MyClass
  {
      private int id;
      private int age;
      public int number;
      public string Name { get; set; }
      public string Name1 { get; set; }
      public string Name2 { get; set; }
      public string Name3 { get; set; }
      public void Test1() { }
      public void Test2() { }
  }

获取类的各种参数

 //每一个类对应一个type对象
 //type对象存储了这个类有哪些方法,哪些数据,哪些成员
 MyClass my = new MyClass();//一个类中的数据 是存储到对象中的,但是type对象只存储类的成员(方法,字段)
 Type type = my.GetType();//通过对象获取这个对象所属类的type对象
 //获取类的名字
 Console.WriteLine(type.Name);
 //获取所在的命名空间
 Console.WriteLine(type.Namespace);
 //返回类所在的程序集
 Console.WriteLine(type.Assembly);
 //获取类的公有字段
 FieldInfo[] array = type.GetFields();//注:只能获取共有字段
 foreach (FieldInfo info in array)
 {
     Console.Write(info.Name + " ");
 }
 Console.WriteLine();
 //获取类的所有属性
 PropertyInfo[] arrayProperty = type.GetProperties();//去除所有的属性
 foreach(PropertyInfo info in arrayProperty)
 {
     Console.Write(info.Name + " ");
 }
 Console.WriteLine();
 //获取类的所有方法
 MethodInfo[] arrayMethod = type.GetMethods();
 foreach (MethodInfo info in arrayMethod)
 {
     Console.Write(info.Name + " ");
 }
 Console.WriteLine();

获取该类所在的程序集以及程序集中所有的类

 MyClass my1 = new MyClass();
 Assembly assem = my1.GetType().Assembly;//通过类的type对象获取所在的程序集
 Console.WriteLine(assem.FullName);
 Type[] types = assem.GetTypes();
 foreach(var temp in types)
 {
     Console.Write(temp.Name + " ");//获得所有的类名称
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值