我可以使用反射更改C#中的私有只读继承字段吗?

Cus*_*dio 5 c# reflection inheritance superclass

像在java我有:

Class.getSuperClass().getDeclaredFields()
Run Code Online (Sandbox Code Playgroud)

我如何知道并从超类中设置私有字段?

我知道这是强烈不推荐的,但我正在测试我的应用程序,我需要模拟一个错误的情况,其中id是正确的,而名称不是.但这个Id是私有的.

Jar*_*Par 9

是的,可以在构造函数运行后使用反射来设置只读字段的值

var fi = this.GetType()
             .BaseType
             .GetField("_someField", BindingFlags.Instance | BindingFlags.NonPublic);

fi.SetValue(this, 1);
Run Code Online (Sandbox Code Playgroud)

编辑

更新以查看直接父类型.如果类型是通用的,则此解决方案可能会出现问题.