当前位置: 首页 > news >正文

C# 反射和特性(获取Type对象)

获取Type对象

本节学习,使用实例对象的GetType方法和typeof运算符和类名来获取Type对象。object
类型包含了一个叫作GetType的方法,它返回对实例的Type对象的引用。由于每一个类型最终
都是从object派生的,所以我们可以在任何类型的对象上使用GetType方法来获取它的Type对
象,如下所示:

Type t=myInstance.GetType();

下面的代码演示了如何声明一个基类以及从它派生的子类。Main方法创建了每一个类的实例
并且把这些引用放在了一个叫作bca的数组中以方便使用。在外层的foreach循环中,代码得到
了Type对象并且输出类的名字,然后获取类的字段并输出。图25-2演示了内存中的对象。

using System;
using System.Reflectionclass BaseClass
{public int BaseField=0;
}class DerivedClass:BaseClass
{public int DerivedField=0;
}class Program
{static void Main(){var bc=new BaseClass();var dc=new DerivedClass();BaseClass[] bca=new BaseClass[]{bc,dc};foreach(var v in bca){Type t=v.GetType();  //获取类型Console.WriteLine($"Object type:{t.Name}");FieldInfo[] fi=t.GetFields();  //获取字段信息foreach(var f in fi){Console.WriteLine($"       Field:{f.Name}");}Console.WriteLine();}}
}

基类和派生类对象以及它们的Type对象

还可以使用typeof运算符来获取Type对象。只需要提供类型名作为操作数,它就会返回Type
对象的引用,如下所示:

Tyep t=tyepof(DerivedClass);

下面的代码给出了一个使用typeof运算符的简单示例:

using System;
using System.Reflection;namespace SimpleReflection
{class BaseClass{public int BaseField;}class DerivedClass:BaseClass{pubic int DerivedField;}class Program{static void Main(){Type tbc=typeof(DerivedClass);Console.WriteLine($"Object type:{tbc.Name}");FieldInfo[] fi=tbc.GetFields();foreach(var f in fi)Console.WriteLine($"    Field:{f.Name}");}}
}
http://www.lryc.cn/news/620025.html

相关文章:

  • 攒钱学概论:5、创业术
  • window显示驱动开发—DirectX 9 资源创建
  • 《AVL树的原理与C++实现:详解平衡二叉搜索树的高效构建与操作》
  • 【自动化运维神器Ansible】playbook主机清单变量深度解析:主机变量与组变量的实战应用
  • JavaWeb-Servlet基础
  • CodeBuddy在AI开发方面的一些特色
  • 1.Cursor快速入门与配置
  • PyTorch Tensor完全指南:深度学习数据操作的核心艺术
  • Matlab(4)
  • C++ stack and queue
  • 【OSPP 开源之夏】Good First issue 第一步—— openEuler Embedded 计划
  • 机器视觉的零件误差检测系统:基于多角度点云融合的圆柱体零件尺寸测量
  • 5. synchronized 关键字 - 监视器锁 monitor lock
  • InnoDB如何解决脏读、不可重复读和幻读的?
  • mysql - 查询重复数据,不区分大小重复问题解决
  • 服务器查看 GPU 占用情况的方法
  • 安全点(Safepoint)完成后唤醒暂停线程的过程
  • 响应式对象的类型及其使用场景
  • 量子安全新纪元:F5发布全新AI驱动的全栈式后量子加密AI安全方案
  • 破解测试数据困境:5招兼顾安全与真实性
  • 全球AI安全防护迈入新阶段:F5推出全新AI驱动型应用AI安全解决方案
  • 【前端Vue】使用ElementUI实现表单中可选择可编辑的下拉框
  • 仓库无人叉车的安全功能有哪些?如何在提升效率时保障安全?
  • k8s中的控制器的使用
  • 汽车高位制动灯难达 CIE 标准?OAS 光学软件高效优化破局
  • 中科米堆CASAIM汽车零部件三维扫描检测解决方案
  • 服务器通过生成公钥和私钥安全登录
  • 单例模式的理解
  • Spring Security 前后端分离场景下的会话并发管理
  • C语言:指针(4)