如何在C#中隐藏基类的私有方法?

莫塔利

我没有找到我的问题的答案,但这似乎很简单。主要的大问题是我在 dll 中购买了一些库和一些硬编码的功能,我无法在没有源代码的情况下重新编译该 dll。所以这是学校层面的问题:

我们有2个A班和B班

class A {
    public void Method1() {
        this.Method2 ();
    }

    private void Method2() {
        WriteLine  ("A");
    }
}

class B : A {
    private void Method2() {
        WriteLine ("B");
   }
}

如果我们调用'new B().Method1()',那么我们就有了字符串行“A”。我们不能对 A 类做任何事情,但我们可以改变 B 类。我们应该得到字符串“B”。

我曾尝试使用“new”修饰符,但是,如您所知,它无济于事。答案“也只覆盖 Method1”不是选项,因为实际代码要大得多。

有什么建议么?

罗基尔

在我看来,您试图覆盖 Method2 以便让 Method1 打印“B”。但是,由于 Method2 在类 A 中是私有的和非虚拟的,因此按照 C# 语言的定义,这是不可能的。

如果我们可以妥协以找到不同的方法来实现您想要的结果,这里有一些建议。

作为修改后的锅炉板的类组成:

class B
{
    private A;
    public void Method1() {
        this.Method2 ();
    }
    private void Method2() {
        WriteLine("B");
    }
    public void KeptMethod() {
        a.KeptMethod();
    }
}

调用/修改私有成员的反射:

typeof(A).GetField("privateValue", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(a, "injected string");
typeof(A).GetMethod("privateMethod", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(a, new object[0]);

我知道这两者都有缺点和局限性,但由于我不知道您的实际目标,我发现很难说得更具体。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C ++中的Normal或Singleton类内GoogleTest私有方法/枚举类

来自分类Dev

如何在目标C中从超类重写私有方法和属性

来自分类Dev

如何在目标C中从超类重写私有方法和属性

来自分类Dev

如何在es6类中声明私有变量和私有方法

来自分类Dev

动态绑定如何对Java基类中的私有方法起作用?

来自分类Dev

动态绑定如何对Java基类中的私有方法起作用?

来自分类Dev

如何在Java类中修改或替换私有方法

来自分类Dev

如何在Javascript类中从“私有方法”访问“公共变量”

来自分类Dev

如何在Rust中测试私有方法?

来自分类Dev

如何在ruby中定义私有方法?

来自分类Dev

派生类如何调用基类的私有方法?

来自分类Dev

私有方法与C ++中的Lambda

来自分类Dev

如何在类内使用私有方法反序列化PyTorch保存的模型?

来自分类Dev

如何在具有私有方法的Jest中模拟HTTP方法

来自分类Dev

如何对Mockito测试的类的私有方法进行存根

来自分类Dev

在Swift中访问父类的私有方法

来自分类Dev

最新Chrome中的类私有方法

来自分类Dev

在(非)静态类中重写私有方法

来自分类Dev

在Swift中访问父类的私有方法

来自分类Dev

在导入的类中调用私有方法

来自分类Dev

Objective-C类扩展与私有方法或变量

来自分类Dev

类别访问主类的私有方法-目标C

来自分类Dev

如何使用Traceur在ES6类中实现私有方法

来自分类Dev

如何在测试方法中模拟受保护/私有方法?

来自分类Dev

如何在Jmockit中模拟私有方法时匹配“ any”参数类型

来自分类Dev

如何在javascript中重新定义私有方法?

来自分类Dev

如何在Jmockit中模拟私有方法时匹配“ any”参数类型

来自分类Dev

如何在Delphi 10.1 Berlin中访问私有方法TStreamReader.FillBuffer?

来自分类Dev

在朋友子类中使用来自基类的私有方法-NVCC中的编译器错误?

Related 相关文章

  1. 1

    如何在C ++中的Normal或Singleton类内GoogleTest私有方法/枚举类

  2. 2

    如何在目标C中从超类重写私有方法和属性

  3. 3

    如何在目标C中从超类重写私有方法和属性

  4. 4

    如何在es6类中声明私有变量和私有方法

  5. 5

    动态绑定如何对Java基类中的私有方法起作用?

  6. 6

    动态绑定如何对Java基类中的私有方法起作用?

  7. 7

    如何在Java类中修改或替换私有方法

  8. 8

    如何在Javascript类中从“私有方法”访问“公共变量”

  9. 9

    如何在Rust中测试私有方法?

  10. 10

    如何在ruby中定义私有方法?

  11. 11

    派生类如何调用基类的私有方法?

  12. 12

    私有方法与C ++中的Lambda

  13. 13

    如何在类内使用私有方法反序列化PyTorch保存的模型?

  14. 14

    如何在具有私有方法的Jest中模拟HTTP方法

  15. 15

    如何对Mockito测试的类的私有方法进行存根

  16. 16

    在Swift中访问父类的私有方法

  17. 17

    最新Chrome中的类私有方法

  18. 18

    在(非)静态类中重写私有方法

  19. 19

    在Swift中访问父类的私有方法

  20. 20

    在导入的类中调用私有方法

  21. 21

    Objective-C类扩展与私有方法或变量

  22. 22

    类别访问主类的私有方法-目标C

  23. 23

    如何使用Traceur在ES6类中实现私有方法

  24. 24

    如何在测试方法中模拟受保护/私有方法?

  25. 25

    如何在Jmockit中模拟私有方法时匹配“ any”参数类型

  26. 26

    如何在javascript中重新定义私有方法?

  27. 27

    如何在Jmockit中模拟私有方法时匹配“ any”参数类型

  28. 28

    如何在Delphi 10.1 Berlin中访问私有方法TStreamReader.FillBuffer?

  29. 29

    在朋友子类中使用来自基类的私有方法-NVCC中的编译器错误?

热门标签

归档