当前位置: 首页 > 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.dtcms.com/a/330087.html

相关文章:

  • 【C#】利用数组实现大数数据结构
  • Spring Cloud系列— Alibaba Sentinel限流
  • Pycharm现有conda环境有对应env,但是添加后没反应
  • 《人形机器人的觉醒:技术革命与碳基未来》——生物混合肌肉:技术原理和进展、比较优势和不足、材料技术要求及材料限制
  • 递归函数与 lambda 函数:用法详解与实践
  • Synchronized锁的使用方式
  • three.js学习记录(鼠标控制)
  • Linux 计划任务
  • 【web站点安全开发】任务3:网页开发的骨架HTML与美容术CSS
  • STM32学习笔记10—DMA
  • JSON索引香港VPS:高效数据处理的完美解决方案
  • JDK17下载与安装图文教程(保姆级教程)
  • 《汇编语言:基于X86处理器》第13章 复习题和编程练习
  • VerIF
  • 【R语言】RStudio 中的 Source on Save、Run、Source 辨析
  • [系统架构设计师]系统架构基础知识(一)
  • MySQL表约束
  • 关于大学计算机专业的课程的一些看法
  • windows通过共享网络上网
  • JavaWeb之响应
  • 使用BeautifulReport让自动化测试报告一键生成
  • 开源组件的“暗礁”:第三方库中的输入与边界风险治理
  • 「数据获取」《广西调查年鉴》(2007-2024)(2009缺失)(获取方式看绑定的资源)
  • GISBox工具处理:将高斯泼溅模型导出为3DTiles
  • 【15】Transformers快速入门:添加自定义 Token
  • 服务器安全防护
  • ARM芯片架构之CoreSight Channel Interface 介绍
  • 基于边缘深度学习的棒球击球训练评估研究
  • 模型训练不再“卡脖子”:国产AI训练平台对比与落地实践指南
  • 马力是多少W,常见车辆的马力范围