反射先了解

一: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的更多相关文章

  1. C# 详解反射

    原博客:http://www.cnblogs.com/Stephenchao/p/4481995.html 两个现实中的例子: 1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的 ...

  2. linux awk命令详解,使用system来内嵌系统命令, awk合并两列

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  3. jquery方法详解--bind(type, [data], fn)

    转自:http://www.zhufengpeixun.cn/jquery/bind_type_data_fn.html bind(type, [data], fn)  返回值::jQuery 概述 ...

  4. 详解C#中System.IO.File类和System.IO.FileInfo类的用法

    System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间.下面通过程序实例来介绍其主要属性和方法. (1) 文件打开 ...

  5. 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

    博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...

  6. OSPF详解

    OSPF 详解 (1) [此博文包含图片] (2013-02-04 18:02:33) 转载 ▼ 标签: 端的 第二 以太 第一个 正在 目录 序言 初学乍练 循序渐进学习OSPF 朱皓 入门之前 了 ...

  7. 单选框radio改变事件详解(用的jquery的radio的change事件)

    单选框radio改变事件详解(用的jquery的radio的change事件) 一.总结 1.用的jquery的radio的change事件:当元素的值发生改变时,会发生 change 事件,radi ...

  8. [转帖]Linux系列之SAR命令使用详解

    Linux系列之SAR命令使用详解 sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工 ...

  9. fluidity详解

    fluidity详解 1.fluidity编译过程 1.1.femtools库调用方法 编译fluidity/femtools目录下所有文件,打包为libfemtools.a静态库文件: 通过-lfe ...

随机推荐

  1. 函数改变全局变量-JS

    切记,一定按三步走: 1. 全局变量声明 2. 函数声明 3. 函数调用 正确做法: var dataStr = null; function remoteCallback(data) { dataS ...

  2. C++调用C#dll类库中的方法(非显性COM)

    一般在网上搜C++如何调用C#的函数,出来的结果都是做成COM组件,但是这种方法dll安装麻烦,需要注册COM组件,需要管理员权限,调试麻烦,经常需要重启机器,反正有诸多不便. 然后在看<CLR ...

  3. 地理数据可视化:Simple,Not Easy

    如果要给2015年的地理信息行业打一个标签,地理大数据一定是其中之一.在信息技术飞速发展的今天,“大数据”作为一种潮流铺天盖地的席卷了各行各业,从央视的春运迁徙图到旅游热点预测,从大数据工程师奇货可居 ...

  4. ogrinfo使用

    简介 orginfo是OGR模块中提供的一个重要工具,用于读取地图文件中记录,可以指定筛选条件(按字段.sql.矩形范围) 使用方式 命令行参数 Usage: ogrinfo [--help-gene ...

  5. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q94-Q96)

    Question 94You need to create a custom application that provides users with the ability to create a ...

  6. linux网络流量实时监控工具之iptraf

    这个工具还是很强大 linux网络流量实时监控工具之iptraf [我的Linux,让Linux更易用]IPTraf是一个网络监控工具,功能比nload更强大,可以监控所有的流量,IP流量,按协议分的 ...

  7. JAVA基础学习day20--IO流二-缓冲流、字节流

    一.缓冲流 1.1.字符流的缓冲区 缓冲区的出现是为了提高IO的读写效率 对应类 BufferedReader BufferedWriter 缓冲区要结合流才可以使用 在流的基础上对流的功能进行了增强 ...

  8. 最简MacOs10.8安装

    虚拟机中安装Mac Os X的方法网上很多很多,但是对刚接触的朋友来讲肯定不是一件容易的事,这个自己深有体会,包括去年已经装好过,今年再找教程安装都装不起来,期间还出现了各种问题,幸好去年装好之后备份 ...

  9. Swift语言

    本文为熟悉使用Objective-C开发iOS快速转入swift开发提供一些便利的途径,没有过多华丽的说明底层原理,也没有过多的概念说明,只提供swift的基本使用以及一些使用示例.高手请让路哈. S ...

  10. 插入排序(java版)

    public class InsertSortTest{ public static void InsertSort(int[] source) { //默认第一个元素已排序 for (int i = ...