加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转]C#反射获取私有字段

(2016-02-29 11:47:16)
分类: CSharp
  1. 转自:http://blog.csdn.net/liyifei21/article/details/34838375

  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Text;  
  5. using System.Reflection;  
  6. namespace ReflectionDemo  
  7.  
  8.     class Program  
  9.      
  10.         static void Main(string[] args)  
  11.          
  12.             Type typeof(ChangeValue);  
  13.             Type[] types new Type[0];//为构造函数准备参数类型  
  14.             ConstructorInfo ci t.GetConstructor(types); //获得构造函数  
  15.             object[] objs new object[0];//为构造函数准备参数值  
  16.             object obj ci.Invoke(objs);//调用构造函数创建对象  
  17.             MethodInfo mi t.GetMethod("WriteLine");//获得公有的writeline方法  
  18.             mi.Invoke(obj, null);  
  19.             FieldInfo fi t.GetField("myValue"BindingFlags.NonPublic BindingFlags.Instance);//获得私有字段  
  20.             FieldInfo[] fis=t.GetFields(BindingFlags.NonPublic BindingFlags.Instance|BindingFlags.Public);  
  21.             Console.WriteLine(fis.Length);  
  22.             foreach (var fieldInfo in fis)  
  23.              
  24.                 Console.WriteLine(fieldInfo.GetValue(obj));  
  25.              
  26.             fi.SetValue(obj, "new Value"); //改写私有字段  
  27.             mi.Invoke(obj, null);  
  28.             MethodInfo mi2 t.GetMethod("Write"BindingFlags.NonPublic BindingFlags.Instance);//获得私有的Write方法  
  29.             mi2.Invoke(obj, null);  
  30.             Console.ReadLine();  
  31.          
  32.      
  33.     public class ChangeValue  
  34.      
  35.         private string myValue "old Value" 
  36.         public string firstValue "values1" 
  37.         public void WriteLine()  
  38.          
  39.             Console.WriteLine("MyValue is: " myValue);  
  40.          
  41.         private void Write()  
  42.          
  43.             Console.WriteLine("MyValue is: " myValue);  
  44.          
  45.      
  46. }  

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有