gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:25:03 24 4
gpt4 key购买 nike

就像在 java 中我有:

Class.getSuperClass().getDeclaredFields()

我如何知道并设置父类(super class)的私有(private)字段?

我知道强烈不建议这样做,但我正在测试我的应用程序,我需要模拟一个错误的情况,其中 id 正确而名称不正确。但是这个 Id 是私有(private)的。

最佳答案

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

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

fi.SetValue(this, 1);

编辑

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

关于c# - 我可以使用反射更改 C# 中的私有(private)只读继承字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com