5

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

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

所以,我猜这个类MathProblemTemplate可以是internal,我的意思是当你计划将一个基类设置为一个具体类时,不要以智能方式显示该类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(); 
}

这可能吗?

4

1 回答 1

3

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

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

于 2012-10-12T22:30:47.847 回答