详解反射->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 ...
随机推荐
- OC静态库里NSClassFromString得到nil的解决
如果你在静态库中有从类名反射回类的代码, 如下: NSString *myClassStr = @"myClass"; Class myClazz = NSClassFromStr ...
- js和html5实现画板
html5新添了一个重要又强大的标签元素<canvas>,该标签真有彻底替换掉flash的尽头,现在很多网页游戏就是用<canvas>完成的,下面代码就是用该标签制作的一个画板 ...
- swift学习笔记之-析构过程
//析构过程deist import UIKit /*析构过程(Deinitialization):析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用.析构器用关键字deinit来标示 ...
- Office版本问题0x80029C4A
说来奇怪,以前运行正常的程序(涉及excel表格输出),现在运行失败了,一调试,发现了如下问题: 无法将类型为"Microsoft.Office.Interop.Excel.Applicat ...
- Instruments指南:如何调试内存泄露
Instruments指南:如何调试内存泄露 开篇 现在,你应该使用的ARC,而不是原来我们使用的MRC或者其他.但是我们在使用ARC的时候也会出现内存泄露的情况. 幸运的是,苹果为我们提供了Inst ...
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
(1)官方下载ShareSDK iOS 2.8.8,地址:http://sharesdk.cn/ (2)根据实际情况,引入相关的库,参考官方文档. (3)在项目的AppDelegate中一般情况下有三 ...
- IOS之KVC和KVO(未完待续)
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 比较好用的web打印控件——Lodop
前一段时间公司一项目比较特殊,客户要求打印单必须是淘宝上卖的那种三联打印单.如果还是使用原来系统自带的打印的话,就会造成无法打印出来理想的效果,于是找了下相关的打印控件,比较网络上比较流行的几款插件, ...
- windows log 打印语句
1.格式化字符串(Writes formatted data to the specified string) wchar_t szMessage[260]; PWSTR pszFunction = ...
- 打印 SpringMVC中所有的接口URL
采用junit test方式 1.配置 simple-test.xml <?xml version="1.0" encoding="UTF-8"?&g ...