c# - 有什么办法可以绕过 private 关键字吗?

标签 c# .net

我有一堆用于调试目的的代码。因此,我用以下内容包围它:

#if DEBUG
#endif

问题是这个调试代码需要将其他类的私有(private)变量输出到文件中。我可以将调试代码潜入每个类中,但这会使现有代码更加困惑,因为我将调试代码与真实代码混合在一起。我可以将所有调试代码放入另一个类中,但这意味着我必须将类中的私有(private)变量设为公共(public)。

为了调试代码,有什么方法可以忽略 private 关键字吗?我可以使用公共(public) getter,但这违背了不使真实代码更加困惑的目的。

最佳答案

  1. 是否可以将它们设为内部而不是私有(private)?
  2. 使用dynamic关键字:

    动态 foo = yourObjectWithPrivateFields; int privateValue = (int)foo.yourPrivateField;

  3. 使用反射:typeof(YourObject).GetField(fieldName, bindFlags).GetValue(yourObjectWithPrivateFields);

关于c# - 有什么办法可以绕过 private 关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20845939/

相关文章:

c# - .NET CORE MVC ViewComponent xUnit 测试

c# - Mysqldump 在查询内不起作用

c# - iOS 上的 Ionic.Zip.Unity.dll ZlibException

c# - System.DirectoryServices.DirectoryEntry 是否包含一个实际使用 "domain\username"和 Ldap 的构造函数?

.net - 通过.NET进行文件数字签名的标准化方法

.net - 防止错误无法在某些服务器上创建 SSL/TLS 安全通道

.net - 可移植类库是否支持 System.Security.Cryptography 命名空间

javascript - 如何在 Javascript 中填充默认下拉列表

c# - 为什么 File.Exists ("c:\filename.txt/") 返回 true?

c# - 以编程方式为 WCF (NetTcpBinding) 指定自定义授权