You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中无法修改原类时,如何访问私有静态字段?

解决方法:通过反射访问私有静态字段

在无法修改原LevelLighting类代码的前提下,可以使用C#的反射机制来访问并修改其私有静态字段auroraBorealisCurrentIntensity。

具体实现代码

using System.Reflection;

// 获取目标类的Type信息
Type levelLightingType = typeof(LevelLighting);

// 检索私有静态字段
FieldInfo auroraField = levelLightingType.GetField(
    "auroraBorealisCurrentIntensity",
    BindingFlags.Static | BindingFlags.NonPublic
);

// 修改字段值(静态字段传入null作为实例参数)
if (auroraField != null)
{
    auroraField.SetValue(null, 1f);
}

// 读取字段值示例
if (auroraField != null)
{
    float currentIntensity = (float)auroraField.GetValue(null);
    // 可基于读取的值执行后续逻辑
}

注意事项

  • 反射会绕过类的封装权限设计,可能引发不可预见的逻辑问题,需谨慎使用
  • 若原类的字段名称、访问修饰符或内部结构发生变更,反射代码会直接失效
  • 在特殊编译环境(如Unity IL2CPP编译、经过代码混淆的程序集)中,反射可能无法正常运行

内容的提问来源于stack exchange,提问作者refreshyt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:50:22