可能重复:
c# internal abstract class, how to hide usage outside assembly
我有一个包含几个抽象类的通用程序集/项目。当我创建新程序集时,开发人员应该派生自MathProblem
和MathProblemTemplate<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();
}
这可能吗?
答案 0 :(得分:3)
你不能,原因是MathProblemTemplate<T>
是公开的,因此它继承的任何类也需要公开。
您可以删除MathProblemTemplate
并将其中的任何代码移至MathProblemTemplate<T>