C#中使用typeof关键字和GetType()获取类的内部结构(反射机制)
一、问题描述
java有反射机制,C#也有反射机制,在C#中typeof关键字用于获取类型的System.Type对象,该对象的GetMethods()方法可以得到类型中定义的方法对象的计集合,调用方法集合中每个方法对象的GetParameters()可以得到每个方法的参数集合,但是需要引用Reflection命名空间。
获取System.Type对象有两种方法:第一种是用typeof关键字,第二种是用对象引用调用GetType()方法
1、System.Type type = typeof(System.Int32); //参数是一种系统类型
2、 string str= “test”;
System.Type type = str.GetType(); //用对象引用调用GetType()方法
二、解决步骤
1、在代码中引用Reflection命名空间
using System.Reflection;
2、可以用typeof关键字,也可以用GetType()方法获取类的内部结构
三、代码演示
1、获取String类的的所有方法和参数并显示。
代码:
————————————————
版权声明:本文为CSDN博主「tongyuehong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tongyuehong137/article/details/51393309
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection; namespace test1
{
public partial class Form7 : Form
{
public Form7()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
//Type type = typeof(System.String);
String str = "test";
Type type = str.GetType();
foreach (MethodInfo method in type.GetMethods())
{
out_rtb.AppendText("方法名称:"+method.Name+Environment.NewLine);
foreach (ParameterInfo param in method.GetParameters())
{
out_rtb.AppendText("\t参数:" + param.Name + Environment.NewLine);
}
}
}
}
}
2、提示错误信息后,将所有CheckBox控件内容清空
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Reflection; namespace test1
{
public partial class Form6 : Form
{
public Form6()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
byte input1,input2;
if (byte.TryParse(input1_tbx.Text, out input1) && byte.TryParse(input2_tbx.Text, out input2))
{
try
{
checked
{
input1 += input2;
}
result_tbx.Text = input1.ToString();
}
catch (OverflowException ex)
{
MessageBox.Show(ex.Message, "错误信息");
}
}
else
{
MessageBox.Show("请输入小于255的数字!", "提示信息");
} //清空输入信息
foreach (Control c in Controls)
{
if (c.GetType() == typeof(TextBox))
{
((TextBox)c).Clear();
}
}
} }
}
C#中使用typeof关键字和GetType()获取类的内部结构(反射机制)的更多相关文章
- 关于android studio中使用class.forname()方法动态获取类实例报NO CLASS FOUND异常的几种处理方法
最近在做一个项目的时候需要用到反射来回调子类的方法,但是在反射过程中总是在class.forname()方法抛出NO CLASS FOUND异常,经过几部检查,问题解决,在此总结一下引起该问题的原因 ...
- C++中的explicit关键字的用法
一.explicit作用: 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. 二.explicit使用注意事项: ...
- 【c++】【转】c++中的explicit关键字
http://www.cnblogs.com/chio/archive/2007/09/17/895263.html c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式(调用) ...
- 【Java基础】java中的反射机制与动态代理
一.java中的反射机制 java反射的官方定义:在运行状态下,可以获取任意一个类的所有属性和方法,并且可通过某类任意一对象实例调用该类的所有方法.这种动态获取类的信息及动态调用类中方法的功能称为ja ...
- Java 中的 反射机制
概念明确 什么是类的对象? 类的对象就是:基于某个类 new 出来的对象,也称为实例对象.这个很容易理解,就不过多阐述了. 什么是类对象? 类对象就是:类加载的产物,封装了一个类的所有信息(类名.父类 ...
- c语言中typeof关键字
为什么因为一个关键字而专门写一篇随笔呢?因为这个关键字在Linux里面地位非同一般!这个关键字typeof在linux内核里面使用非常广泛! 下面这两个等效声明,用于声明int类弄的变量atypeof ...
- typescript 中的 infer 关键字的理解
infer 这个关键字,整理记录一下,避免后面忘记了.有点难以理解呢. infer infer 是在 typescript 2.8中新增的关键字. infer 可以在 extends 条件类型的字句中 ...
- C# typeof() 和object.GetType() 、Type..GetType()使用和区别
进行学习到表达树了,用动Tpye了.所以整理了以下他们区别和用法 总得来说他们都是为了获取某个实例具体引用的数据类型System.Type.1.GetType()方法继承自Object,所以C#中任何 ...
- PHP中面向对象的关键字
php面向对象中常用的关键字有final.static.const (1)final: 1,final不能修饰成员属性 2,final只能修饰类和方法 作用: 使用final修饰的类不能被子类继承 使 ...
随机推荐
- [LeetCode] 448. 找到所有数组中消失的数字 ☆
描述 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. 您 ...
- mysql FORMAT() 格式化后的数字运算出错
原文链接 FORMAT() 之后 会满三位加逗号, 在此基础上进行数字运算的时候会出现预料之外的结果, 建议使用 : convert(param, decimal(12,2)) cast(par ...
- SpringBoot使用MockMVC单元测试Controller
对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络 ...
- QEMU简介
参考:What Is the Difference between QEMU and KVM? 注意:上面参考文章有个错误,他把KVM算成类型一虚拟化,应该是类型2虚拟化. 关于类型一虚拟化和类型二虚 ...
- 交互式计算引擎REOLAP篇
交互式计算引擎ROLAP篇 摘自:<大数据技术体系详解:原理.架构与实践> 一.Impala Impala最初由Cloudera公司开发的,其最初设计动机是充分结合传统数据库与大数据系 ...
- ICS2019-Linux汇编实验指导
ICS2019-Linux汇编实验指导 环境配好了? 开始调试 一. 首先安装NASM 1. 先判断系统是否已经安装了nasm 打开终端,执行 whereis nasm :如果显示nasm: /us ...
- js 字符截取 汉字2字符 英文1个字符
function countCharacters(str, num) { var str = '' + str || '', num = +num || 0, res = '', length = 0 ...
- noi 7827 质数的和与积
描述 两个质数的和是S,它们的积最大是多少? 输入一个不大于10000的正整数S,为两个质数的和.输出一个整数,为两个质数的最大乘积.数据保证有解.样例输入 50 样例输出 589 欧拉筛+尺取.实际 ...
- 分布式调度平台XXL-JOB源码分析-调度中心
架构图 上图是我们要进行源码分析的2.1版本的整体架构图.其分为两大块,调度中心和执行器,本文先分析调度中心,也就是xxl-job-admin这个包的代码. 关键bean 在application.p ...
- es6 let介绍及应用场景
关于更多es6建议去看阮一峰的博客~ es6入门:http://es6.ruanyifeng.com/ 源码仓库:https://github.com/ruanyf/es6tutorial let介绍 ...