本帖最后由 段朝骞 于 2013-9-30 12:59 编辑
某位大神说过:反射就是操作元数据
通过反射可以读取封装类中的方法,属性等,可以不使用new关键字
最利害的是可以直接使用类中的私有字段,方法等- <div class="blockcode"><blockquote>using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Reflection;
- namespace 反射1
- {
- class Program
- {
- class People
- {
- private string name="李斯";
- private void Say()
- {
- Console.WriteLine("hello"+name);
- }
- }
- static void Main(string[] args)
- {
- Type typ = typeof(People);
- //反射出name字段
- FieldInfo fi = typ.GetField("name",BindingFlags.Instance|BindingFlags.NonPublic);
- //反射出Say()方法
- MethodInfo me = typ.GetMethod("Say",BindingFlags.Instance|BindingFlags.NonPublic);
- //创建obj实例
- object obj = Activator.CreateInstance(typ);
- //设置name字段
- fi.SetValue(obj,"张三");
- //调用Say()方法
- me.Invoke(obj,new object[]{}); //打印出结果 hello张三
- Console.ReadKey();
- }
- }
- }
复制代码 |