【发布时间】:2016-06-07 09:47:36
【问题描述】:
假设我有一个这样的基类:
public abstract class MyBaseClass
{
protected void MyMethod(string myVariable)
{
//...
}
}
然后我在单独的程序集中继承这个类:
public abstract class MyDerivedClass : MyBaseClass
{
static readonly string MyConstantString = "Hello";
protected void MyMethod()
{
MyMethod(MyConstantString);
}
}
我现在想确保从MyDerivedClass 继承的任何其他类都无法访问MyBaseClass.MyMethod() 方法。 (澄清一下,我仍然希望能够不带参数地调用MyDerivedClass.MyMethod())
我尝试使用protected internal,但没有成功。
更新:我正在尝试这样做,因为我正在处理的应用程序有一堆使用基类的单独程序。有 5 种不同“类型”的程序,每一种都执行一个特定的、单独的功能,但它们都有一些我试图抽象到这个基类中的通用代码。通用代码 99% 相同,仅根据调用它的程序类型略有不同。这就是为什么我的基类在示例中采用了一个字符串参数,然后该参数在派生的基类中消失了,因为该类知道它执行角色 x,所以它相应地告诉它的基类。
【问题讨论】:
-
您的意思是不想让他们调用它,还是不想让他们覆盖它?
-
@MatthewWatson 两者。
-
你无法阻止它被调用。
-
你不能那样做,基本上。你不能让一个成员只能被其他一个类访问。
-
简单,让它
private
标签: c# abstraction access-modifiers