如何编辑静态只读整数? (和谐/反思)

问题描述 投票:0回答:1

有一个我需要编辑的特定变量,它无法通过类的实际实例访问,因为它是静态的,并且我尝试过的任何操作都不起作用或无效

我尝试过使用反射

field.SetValue(Type.instance, 26) 和 field.SetValue(null, 26) 都为 null(因为这是我可以找到的静态变量) 通过和谐遍历,它只是不会改变变量

我尝试过查看有关同一问题的其他帖子,但没有一个在这里起作用

整数从25到26(基值为25,26只是一个测试数字,以后很可能会改变)

c# unity-game-engine
1个回答
0
投票

对于私有静态字段,您需要 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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.