gpt4 book ai didi

c# - 如何在 C# 中隐藏(删除)基类的方法?

转载 作者:IT王子 更新时间:2023-10-29 04:51:38 26 4
gpt4 key购买 nike

<分区>

问题的本质是,给定这样的类层次结构:

class A
{
protected void MethodToExpose()
{}

protected void MethodToHide(object param)
{}
}

class B : A
{
new private void MethodToHide(object param)
{}

protected void NewMethodInB()
{}
}

class C : B
{
public void DoSomething()
{
base.MethodToHide("the parameter"); // This still calls A.MethodToHide()
base.MethodToExpose(); // This calls A.MethodToExpose(), but that's ok
base.NewMethodInB();
}
}

如何防止从“B”类继承的任何类看到方法 A.MethodToHide()?在 C++ 中,通过使用诸如 class B : private A 之类的声明,这很容易,但此语法在 C# 中无效。

对于那些感兴趣的人(或者想知道我真正想做什么),我们正在尝试做的是为 Rhino.Commons.NHRepository 创建一个包装器,它隐藏了我们不使用的方法' 想要向我们的开发人员组公开,因此我们可以采用千篇一律的方式来开发我们的应用程序,新开发人员可以轻松遵循。所以是的,我相信“Is-A”测试对整个链有效(WidgetRepository Is-A BaseRepository Is-A NHRepository)。

编辑:为了论证,我应该提到类 A 是我们无法控制的 API 类。否则问题会变得容易得多。

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