详解反射->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 ...
随机推荐
- Javascript一些小细节
1.判断class存在 $(obj).hasClass('BTCheck_ON') $obj.attr('class')=="BTCheck_ON" 有时我们判断样式存在会写成第二 ...
- ABAP:区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN
1,CALL SCREEN XXXX将在Screen调用栈(CALL STACK)上面添加一层调用(进栈),调用XXXX的PBO和PAI,如果XXXX的Next Screen不为0,那么将继续其Nex ...
- Mybatis学习记录(三)----理解SqlMapConfig.xml文件
SqlMapConfig.xml mybatis的全局配置文件SqlMapConfig.xml,配置内容如下: properties(属性) settings(全局配置参数) typeAliases( ...
- 【读书笔记】iOS-NSString的length
NSString的length方法能够准确无误地处理国际字符串,如含有俄文,中文或者日本文字符的字符串,以及使用Unicode国际字符标准的字符串.在C语言中处理这些国际字符串是件令人非常头疼的事情 ...
- 往UISegmentedControl上添加几个控制器
#import "RootViewController.h" #import "LoginViewController.h" #import "Reg ...
- JAVA基础学习day17--集合工具类-Collections
一.Collection简述 1.1.Collection与Collections的区别 Collections是集合的静态工具类 Collection:是集合的顶级接口 二.Sort 2.1.sor ...
- IOS 网络浅析-(四 get&post)
网络请求默认是get 网络请求有很多种:GET查 POST改 PUT增 DELETE删 HEAD 在平时开发中主要用的 是 get 和 post. get 获得数据 (获取用户信息) get 请 ...
- 【转】IOS动画的实现,其实很简单
动画效果提供了状态或页面转换时流畅的用户体验,在iOS系统中,咱们不需要自己编写绘制动画的代码,Core Animation提供了丰富的api来实现你需要的动画效果.UIKit只用UIView来展示动 ...
- 使用ObjectOutputStream进行socket通信的时候出现固定读到四个字节乱码的问题
问题描述: 最近在写一个通信相关的项目,服务器端和客户端通过socket进行通信.本来想利用read的阻塞特性,服务器端和客户端按照一定的流程进行文件读写.结果发现客户端或者服务器read方法一直都返 ...
- 远离腰痛的好方法——如何锻炼腰背部肌肉?
在我们的骨科门诊中最常见到的就是腰痛患者:引起腰痛的原因很多,也比较复杂,所以就有俗语"病人腰痛.医生头痛"一说.其实,相当大部分的腰痛症状都是跟腰背部后方的肌肉筋膜劳损或者无菌性 ...