可能性の重複:
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();
}
ためですこれは可能ですか?
あなたが読んでいる[この関連の質問](http://stackoverflow.com/questions/1244953/c-sharp-internal-abstract-classにそれで任意のコードを移動することができますあなたの質問に答えたときにリストに表示されていた - 使い方 - 非 - 外見 - 使用法 - 外部アセンブリ) –
はい、私はそれを読んだが、私はまだ次のようなエラーが出ています:不一致のアクセシビリティ:ベースクラス 'DevNinja.Core.Models.MathProblemTemplate'はクラス 'DevNinja.Core.Models.MathProblemTemplateよりアクセスしにくい' –
うーん、ええ、あなたはそれを違うものにするテンプレートを使っています。 –