我有一堆用于调试目的的代码。因此,我用以下内容包围它:
#if DEBUG
#endif
问题是这个调试代码需要将其他类的私有(private)变量输出到文件中。我可以将调试代码潜入每个类中,但这会使现有代码更加困惑,因为我将调试代码与真实代码混合在一起。我可以将所有调试代码放入另一个类中,但这意味着我必须将类中的私有(private)变量设为公共(public)。
为了调试代码,有什么方法可以忽略 private 关键字吗?我可以使用公共(public) getter,但这违背了不使真实代码更加困惑的目的。
最佳答案
- 是否可以将它们设为内部而不是私有(private)?
使用dynamic关键字:
动态 foo = yourObjectWithPrivateFields; int privateValue = (int)foo.yourPrivateField;
使用反射:
typeof(YourObject).GetField(fieldName, bindFlags).GetValue(yourObjectWithPrivateFields);
关于c# - 有什么办法可以绕过 private 关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20845939/