是否可以隐藏或阻止继承的protected virtualprotected abstract方法,以便其他继承的类无法访问它们?

例如:

class Base<T>
{
    protected abstract T CreateInstance();
}

class Derivative : Base<Derivative>
{
    protected sealed override Derivative CreateInstance()
    {
        return new Derivative();
    }
}

class MoreDerivative : Derivative
{
    public MoreDerivative()
    {
        // cannot access CreateInstance here
    }
}


我不认为它是用该语言实现的,但也许有注释或类似内容。

最佳答案

不。在为类型定义成员时,是说该类型及其所有子类型都将具有该成员。没有办法“撤销”。该假设是类型系统的组成部分。

您可能要考虑在这里使用合成,而不是继承。创建一个具有Derivative类型的字段的类型,而不是从其继承。

关于c# - 隐藏继承的 protected 方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28177308/

10-13 03:28