C#在类外部实现对私有字段的值的修改
2021-03-07 19:30
标签:mamicode mem name fhe foreach mod false 字段 redo 定义一个测试类: 如果在外部想实现对私有字段的修改,该如何做呢?下面使用反射的技术实现这个需求,直接上代码: 运行结果: 这篇文章中也有对 filed.SetValue() 方法的一个使用,只不过是使用在unity工程中: https://www.cnblogs.com/luguoshuai/p/12775902.html C#在类外部实现对私有字段的值的修改 标签:mamicode mem name fhe foreach mod false 字段 redo 原文地址:https://www.cnblogs.com/luguoshuai/p/12818363.html1 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 }
上一篇:C# 获取MAC地址
下一篇:APIO2019 题解