如何使用内部关键字隐藏类?

Dar*_*Zon 5 c# oop abstract-class class internal

可能重复:
c#内部抽象类,如何隐藏程序集外的用法

我有一个共同的程序集/项目,有几个抽象类.当我创建一个新的程序集时,开发人员应该从派生MathProblemMathProblemTemplate<T>类派生.

所以,我猜这个类MathProblemTemplate可以internal,我的意思是当你计划将一个基类设置为一个具体的类,而不是在intellisense中显示该类MathProblemTemplate,但是是的MathProblemTemplate<T>

// Question classes
public abstract class Question
{
    protected QuestionTemplate Template { get; private set; }

    public Question(QuestionTemplate template)
    {
        this.Template = template;
    }
}

public abstract class MathProblem : Question
{
    public MathProblem(MathProblemTemplate template)
        : base(template)
    {
    }
}

// QuestionTemplate classes
public abstract class QuestionTemplate
{
    public QuestionTemplate() { }
}

// This is the class which I'd like to hide
public abstract class MathProblemTemplate : QuestionTemplate
{
}

public abstract class MathProblemTemplate<T> : MathProblemTemplate
{
    protected abstract T Method1();
    protected abstract T Method2(); 
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Tre*_*ley 3

你不能,因为它MathProblemTemplate<T>是公共的,因此它继承的任何类也需要是公共的。

您可以删除MathProblemTemplate其中的任何代码并将其移动到MathProblemTemplate<T>