首页 > Windows开发 > 详细

C#在类外部实现对私有字段的值的修改

时间:2020-05-02 16:09:54      阅读:64      评论:0      收藏:0      [点我收藏+]

定义一个测试类:

1 class RefHero
2 {
3     string name = "Tom";
4     int age = 10;
5     bool isBoy = false;
6 }

如果在外部想实现对私有字段的修改,该如何做呢?下面使用反射的技术实现这个需求,直接上代码:

 1 static void ModifyRefHeroFiled()
 2 {
 3     //收集需要修改的私有字段的名字
 4     string Filed_name = "name";
 5     string Filed_age = "age";
 6     string Filed_isBoy = "isBoy";
 7 
 8     Type type = typeof(RefHero);
 9     RefHero hero = new RefHero();
10     //获取 RefHero 中所有的实例私有字段
11     FieldInfo[] fieldArray = type.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly);
12     foreach (FieldInfo filed in fieldArray)
13     {
14         string fileName = filed.Name;
15         if (Filed_name == fileName)
16             filed.SetValue(hero, "Jick");
17         else if (Filed_age == fileName)
18             filed.SetValue(hero, 18);
19         else if (Filed_isBoy == fileName)
20             filed.SetValue(hero, true);
21         Console.WriteLine(string.Format("字段名字:{0} 字段类型:{1} 值 = {2}", filed.Name, filed.MemberType, filed.GetValue(hero)));
22     }
23 }

运行结果:

技术分享图片

这篇文章中也有对 filed.SetValue() 方法的一个使用,只不过是使用在unity工程中:

https://www.cnblogs.com/luguoshuai/p/12775902.html

C#在类外部实现对私有字段的值的修改

原文:https://www.cnblogs.com/luguoshuai/p/12818363.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!