我有以下问题:
有一个引擎调用 SuperClass 的静态方法(我们将其称为 SuperClass.StaticMethod)。我无法访问引擎的代码,但我可以反思一下。
我对 SuperClass 进行了子类化(生成 SubClass),并且能够通过反射编辑从 SuperClass 继承的私有字段。到目前为止一切正常。
引擎有一个类(我们称之为常量),它有很多类的静态最终实例,包括超类,但不是我的子类,因为它不是引擎的一部分。
现在, SuperClass.StaticMethod 的作用与此等效:
public int StaticMethod(int i)
{
if(i == 0)
return Constants.SuperClassInstance.Field_1;
else if(i == 1)
return Constants.SuperClassInstance.Field_2;
}
SuperClass.Field_1 和 SuperClass.Field_2 都是私有的(它们不是静态的,人们认为它们是静态的,所以我正在稍微编辑问题),但是静态方法可以看到它们,因为它是 SuperClass 的成员。正如我所说,我能够通过反射在继承的子类上设置这些字段的值,但是由于 SupperClass.StaticMethod 的工作方式,如上所示,这对其没有影响。
我不认为我可以更改 SuperClassInstance.Field_1 和 Field_2,否则我会稍微但明智地打破 SuperClass 的工作方式。
有没有办法解决这个问题?