【发布时间】:2012-10-03 18:54:54
【问题描述】:
可能重复:
c# internal abstract class, how to hide usage outside assembly
我有一个公共程序集/项目,它有几个抽象类。当我创建一个新程序集时,开发人员应该派生自 MathProblem 和 MathProblemTemplate<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();
}
这可能吗?
【问题讨论】:
-
您是否阅读过您提出问题时出现在列表中的this relevant question?
-
是的,我已经阅读了它,但我仍然收到如下错误: 可访问性不一致:基类 'DevNinja.Core.Models.MathProblemTemplate' 比类 'DevNinja.Core.Models 更难访问.MathProblemTemplate
' -
嗯,是的,您使用的模板使其与众不同。
-
除了讨厌的朋友黑客之外,@TomWijsman 提到你的问题的答案说你不能这样做。如果你想从另一个程序集中的类派生,它必须是公共的。
-
好吧,我的意图只是显示泛型类并隐藏非泛型
标签: c# oop class abstract-class internal