Cus*_*dio 5 c# reflection inheritance superclass
像在java我有:
Class.getSuperClass().getDeclaredFields()
Run Code Online (Sandbox Code Playgroud)
我如何知道并从超类中设置私有字段?
我知道这是强烈不推荐的,但我正在测试我的应用程序,我需要模拟一个错误的情况,其中id是正确的,而名称不是.但这个Id是私有的.
是的,可以在构造函数运行后使用反射来设置只读字段的值
var fi = this.GetType()
.BaseType
.GetField("_someField", BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(this, 1);
Run Code Online (Sandbox Code Playgroud)
编辑
更新以查看直接父类型.如果类型是通用的,则此解决方案可能会出现问题.