
正文
详解反射->Type.System
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
反射先了解
一:system.Type
获取基本信息:
Type.Name //类名
Type.FullName //完整路径
Type.Namespace //空间名
public class student
{
public int Id { set; get; }
public string Name { set; get; }
public int Age { set; get; }
}
static void Main(string[] args)
{
student s = new student() { Id = , Name = "zzj", Age = };
Type t = typeof(student);
//查看类信息
Console.WriteLine("Name={0},FullName={1},Namespace={2}", t.Name, t.FullName, t.Namespace); }
效果图:
Name=student
FullName=win32.反射+student
Namespace=win32
二。反射下的几个重要方法
System.Reflection.
PropertyInfo:封装类型属性信息
ConstructorInfo:类型构造函数
MethodInfo:类型的方面名称
EventInfo:类型事件信息
ParameterInfo:方法、构造函数信息
MemberInfo:成员类型 Type.GetMembers()/GetMember()/FindMember()
1.成员信息 与 memberInfo
StringBuilder sb = new StringBuilder();
MemberInfo[] me = t.GetMembers();//get page member
sb.Append("查看类型" + t.Name + t.Name + "的成员信息");
foreach (MemberInfo m in me) {
sb.Append("成员"+m.ToString().PadRight()+"类型:"+m.MemberType+"\n");
}
Console.WriteLine(sb);
查看类型studentstudent的成员信息成员Void set_Id(Int32)
类型:Method
成员Int32 get_Id() 类型:Method
成员Void set_Name(System.String) 类型:Method
成员System.String get_Name() 类型:Method
成员Void set_Age(Int32) 类型:Method
成员Int32 get_Age() 类型:Method
成员System.String ToString() 类型:Method
成员Boolean Equals(System.Object) 类型:Method
成员Int32 GetHashCode() 类型:Method
成员System.Type GetType() 类型:Method
成员Void .ctor() 类型:Constructor
成员Int32 Id 类型:Property
成员System.String Name 类型:Property
成员Int32 Age 类型:Property
成员win32.反射+student+major 类型:NestedType请按任意键继续. . .
2.字段信息与FieldInfo类型
如果希望获取一个类型的所有字段,可以使用GetFields()方法,再次添加一个方法
FieldExplore():(但是感觉只能获取属性,还有静态)
static void FieldExplor(Type t) {
StringBuilder sb = new StringBuilder();
FieldInfo[] fields = t.GetFields();
sb.Append("查看类型" + t.Name + "的字段信息:\n");
sb.Append(string.Empty.PadLeft(, '-') + "\n");
foreach (FieldInfo fi in fields) {
sb.Append("名称:" + fi.Name + "\n");
sb.Append("类型:" + fi.FieldType + "\n");
sb.Append("特性:" + fi.Attributes + "\n");
}
Console.WriteLine(sb.ToString()); }
查看类型student的字段信息:
--------------------------------------------------
名称:love
类型:System.String
特性:Public
名称:Lv
类型:System.Int32
特性:Public, Static
3.属性信息与PropertyInfo类型
static void PropertydExplor(Type t)
{
StringBuilder sb = new StringBuilder();
PropertyInfo[] fields = t.GetProperties();
sb.Append("查看类型" + t.Name + "的属性信息:\n");
sb.Append(string.Empty.PadLeft(, '-') + "\n");
foreach (PropertyInfo fi in fields)
{
sb.Append("名称:" + fi.Name + "\n");
sb.Append("类型:" + fi.PropertyType + "\n");
sb.Append("可读:" + fi.CanRead + "\n");
sb.Append("可写:" + fi.CanWrite + "\n");
sb.Append("特性:" + fi.Attributes + "\n");
}
Console.WriteLine(sb.ToString()); }
查看类型student的属性信息:
--------------------------------------------------
名称:Id
类型:System.Int32
可读:True
可写:True
特性:None
名称:Name
类型:System.String
可读:True
可写:True
特性:None
名称:Age
类型:System.Int32
可读:True
可写:True
特性:None
4.方法信息与MethodInfo类型
static void MethodExplore(Type t)
{
StringBuilder sb = new StringBuilder();
MethodInfo[] me = t.GetMethods();//get page member
sb.Append("查看类型" + t.Name + t.Name + "的成员信息");
foreach (MethodInfo m in me)
{
sb.Append("名称:" + m.Name + "\n");
sb.Append("签名:" + m.ToString() + "\n");
sb.Append("属性:" + m.Attributes + "\n");
sb.Append("返回值类型:" + m.ReturnType + "\n");
}
Console.WriteLine(sb);
}
查看类型studentstudent的成员信息名称:set_Id
签名:Void set_Id(Int32)
属性:PrivateScope, Public, HideBySig, SpecialName
返回值类型:System.Void
名称:get_Id
签名:Int32 get_Id()
属性:PrivateScope, Public, HideBySig, SpecialName
返回值类型:System.Int32
名称:set_Name
签名:Void set_Name(System.String)
属性:PrivateScope, Public, HideBySig, SpecialName
返回值类型:System.Void
名称:get_Name
签名:System.String get_Name()
属性:PrivateScope, Public, HideBySig, SpecialName
返回值类型:System.String
名称:set_Age
签名:Void set_Age(Int32)
属性:PrivateScope, Public, HideBySig, SpecialName
返回值类型:System.Void
名称:get_Age
签名:Int32 get_Age()
属性:PrivateScope, Public, HideBySig, SpecialName
返回值类型:System.Int32
名称:ToString
签名:System.String ToString()
属性:PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask
返回值类型:System.String
名称:Equals
签名:Boolean Equals(System.Object)
属性:PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask
返回值类型:System.Boolean
名称:GetHashCode
签名:Int32 GetHashCode()
属性:PrivateScope, Public, Virtual, HideBySig, VtableLayoutMask
返回值类型:System.Int32
名称:GetType
签名:System.Type GetType()
属性:PrivateScope, Public, HideBySig
返回值类型:System.Type
5.ConstructorInfo类型和EventInfo类型
详解反射->Type.System的更多相关文章- C# 详解反射
原博客:http://www.cnblogs.com/Stephenchao/p/4481995.html 两个现实中的例子: 1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的 ...
- linux awk命令详解,使用system来内嵌系统命令, awk合并两列
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- jquery方法详解--bind(type, [data], fn)
转自:http://www.zhufengpeixun.cn/jquery/bind_type_data_fn.html bind(type, [data], fn) 返回值::jQuery 概述 ...
- 详解C#中System.IO.File类和System.IO.FileInfo类的用法
System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开 ...
- 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...
- OSPF详解
OSPF 详解 (1) [此博文包含图片] (2013-02-04 18:02:33) 转载 ▼ 标签: 端的 第二 以太 第一个 正在 目录 序言 初学乍练 循序渐进学习OSPF 朱皓 入门之前 了 ...
- 单选框radio改变事件详解(用的jquery的radio的change事件)
单选框radio改变事件详解(用的jquery的radio的change事件) 一.总结 1.用的jquery的radio的change事件:当元素的值发生改变时,会发生 change 事件,radi ...
- [转帖]Linux系列之SAR命令使用详解
Linux系列之SAR命令使用详解 sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工 ...
- fluidity详解
fluidity详解 1.fluidity编译过程 1.1.femtools库调用方法 编译fluidity/femtools目录下所有文件,打包为libfemtools.a静态库文件: 通过-lfe ...
随机推荐- 数据库(SQL Server)管理数据库表~新奇之处
说到“数据库”,我总有一种莫名的感觉,在刚刚接触到的数据库中就让我似懂非懂渡过着,于是思考着.于是在冷静的时空中让我回想到了很多的知识,不知你们是怎样过来的,真心希望我的这篇数据库总结能够让我们都有一 ...
- truncate,delete,drop的异同点
说明:本文摘自oracle技术用户讨论组 truncate,delete,drop的异同点 注意:这里说的delete是指不带where子句的delete语句 相同点:truncate和不带w ...
- VC 使用OnCtlColor函数来改变控件颜色(引用)
在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msg HBRUSH OnC ...
- ASP.NET Web API标准的“管道式”设计
详见:http://www.cnblogs.com/artech/p/asp-net-web-api-pipeline.html http://www.codeproject.com/Articles ...
- DOS和UNIX文本文件之间相互转换的方法
在Unix/Linux下可以使用file命令查看文件类型,如下: file dosfile.txt 使用dos2unix 一般Linux发行版中都带有这个小工具,只能把DOS转换为UNIX文件,命令如 ...
- GBK转utf-8,宽字符转窄字符
//GBK转UTF8 string CAppString::GBKToUTF8(const string & strGBK) { string strOutUTF8 = "" ...
- head first python菜鸟学习笔记(第四章)
1,p124,错误:NameError: name 'print_lol' is not defined 要想文件内如图显示,需要把调用BIF print()改为调用第二章的nester模块中的pri ...
- SpringCloud入门1-服务注册与发现(Eureka)
前言 Oracle转让Java,各种动态语言的曝光率上升,Java工程师的未来在哪里?我觉得Spring Cloud让未来有无限可能.拖了半年之久的Spring Cloud学习就从今天开始了.中文教材 ...
- springboot整合dubbo\zookeeper做注册中心
springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...
- DotNetCore依赖注入实现批量注入
文章转载自平娃子(QQ:273206491):http://os.pingwazi.cn/resource/batchinjectservice 一.依赖注入 通过依赖注入,可以实现接口与实现类的松耦 ...
原博客:http://www.cnblogs.com/Stephenchao/p/4481995.html 两个现实中的例子: 1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的 ...
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
转自:http://www.zhufengpeixun.cn/jquery/bind_type_data_fn.html bind(type, [data], fn) 返回值::jQuery 概述 ...
System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开 ...
博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...
OSPF 详解 (1) [此博文包含图片] (2013-02-04 18:02:33) 转载 ▼ 标签: 端的 第二 以太 第一个 正在 目录 序言 初学乍练 循序渐进学习OSPF 朱皓 入门之前 了 ...
单选框radio改变事件详解(用的jquery的radio的change事件) 一.总结 1.用的jquery的radio的change事件:当元素的值发生改变时,会发生 change 事件,radi ...
Linux系列之SAR命令使用详解 sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工 ...
fluidity详解 1.fluidity编译过程 1.1.femtools库调用方法 编译fluidity/femtools目录下所有文件,打包为libfemtools.a静态库文件: 通过-lfe ...
- 数据库(SQL Server)管理数据库表~新奇之处
说到“数据库”,我总有一种莫名的感觉,在刚刚接触到的数据库中就让我似懂非懂渡过着,于是思考着.于是在冷静的时空中让我回想到了很多的知识,不知你们是怎样过来的,真心希望我的这篇数据库总结能够让我们都有一 ...
- truncate,delete,drop的异同点
说明:本文摘自oracle技术用户讨论组 truncate,delete,drop的异同点 注意:这里说的delete是指不带where子句的delete语句 相同点:truncate和不带w ...
- VC 使用OnCtlColor函数来改变控件颜色(引用)
在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msg HBRUSH OnC ...
- ASP.NET Web API标准的“管道式”设计
详见:http://www.cnblogs.com/artech/p/asp-net-web-api-pipeline.html http://www.codeproject.com/Articles ...
- DOS和UNIX文本文件之间相互转换的方法
在Unix/Linux下可以使用file命令查看文件类型,如下: file dosfile.txt 使用dos2unix 一般Linux发行版中都带有这个小工具,只能把DOS转换为UNIX文件,命令如 ...
- GBK转utf-8,宽字符转窄字符
//GBK转UTF8 string CAppString::GBKToUTF8(const string & strGBK) { string strOutUTF8 = "" ...
- head first python菜鸟学习笔记(第四章)
1,p124,错误:NameError: name 'print_lol' is not defined 要想文件内如图显示,需要把调用BIF print()改为调用第二章的nester模块中的pri ...
- SpringCloud入门1-服务注册与发现(Eureka)
前言 Oracle转让Java,各种动态语言的曝光率上升,Java工程师的未来在哪里?我觉得Spring Cloud让未来有无限可能.拖了半年之久的Spring Cloud学习就从今天开始了.中文教材 ...
- springboot整合dubbo\zookeeper做注册中心
springboot整合dubbo发布服务,zookeeper做注册中心.前期的安装zookeeper以及启动zookeeper集群就不说了. dubbo-admin-2.5.4.war:dubbo服 ...
- DotNetCore依赖注入实现批量注入
文章转载自平娃子(QQ:273206491):http://os.pingwazi.cn/resource/batchinjectservice 一.依赖注入 通过依赖注入,可以实现接口与实现类的松耦 ...







