zoukankan      html  css  js  c++  java
  • .NET程序内,访问私有或者保护成员的技巧

    如果是C++,我们可以计算对象内成员的位置,然后偏移指针以访问类型的所有非公开成员。但是.NET对象完全受GC管理,地址根本无法得到,并且也无法通过指针调用方法。

    当然... 这是一种很不值得推荐的技巧,访问非公有成员很可能破坏对象状态,造成不可预料的后果。但是无论如何,利用.NET的反射机制可以轻松做到这一点。

    比如这样一个类:

    class MyClass
    {
      private string PrivateField = "Private Field";
      protected string ProtectedField = "Protected Field";

      private string _ProtectedProperty = "Protected Property";
      protected string ProtectedProperty
      {
       get{return _ProtectedProperty;}
       set{_ProtectedProperty = value;}
      }

      private string _PrivateProperty = "Private Property";
      private string PrivateProperty
      {
       get{return _PrivateProperty;}
       set{_PrivateProperty = value;}
      }

      protected void ProtectedMethod()
      {
       Console.WriteLine("Protected Method Invoked");
      }

      private void PrivateMethod()
      {
       Console.WriteLine("Private Method Invoked");
      }
    }

    除了默认的构造函数,没有任何成员是公开的,但是我仍然想获取和设置Field和Property的值,以及调用那两个方法。方法是:

    输出:

  • 相关阅读:
    python函数--isalpha()方法
    python函数--isdigit()方法
    python函数--isalnum()方法
    python函数--range()方法
    python函数--len()方法
    python函数--介绍
    Linux命令总结--awk命令
    Linux命令总结--pwd命令
    Linux命令总结--rm命令
    Linux命令总结--cp命令
  • 原文地址:https://www.cnblogs.com/rr163/p/4178169.html
Copyright © 2011-2022 走看看