有一个我需要编辑的特定变量,它无法通过类的实际实例访问,因为它是静态的,并且我尝试过的任何操作都不起作用或无效
我尝试过使用反射
field.SetValue(Type.instance, 26) 和 field.SetValue(null, 26) 都为 null(因为这是我可以找到的静态变量) 通过和谐遍历,它只是不会改变变量
我尝试过查看有关同一问题的其他帖子,但没有一个在这里起作用
整数从25到26(基值为25,26只是一个测试数字,以后很可能会改变)
对于私有静态字段,您需要 NonPublic 和 Static 绑定标志。
using System.Reflection;
Assembly.GetExecutingAssembly()
.GetType("Test")
.GetField("thing", BindingFlags.NonPublic | BindingFlags.Static)
.SetValue(null, 26);
Test.Write();
public class Test
{
private static int thing = 0;
public static void Write()
{
Console.WriteLine(thing);
}
}