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

时间:2012-10-12 22:16:58

标签: c# oop class abstract-class internal

  

可能重复:
  c# internal abstract class, how to hide usage outside assembly

我有一个包含几个抽象类的通用程序集/项目。当我创建新程序集时,开发人员应该派生自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(); 
}

这可能吗?

1 个答案:

答案 0 :(得分:3)

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

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