5

Possible Duplicate:
c# internal abstract class, how to hide usage outside assembly

I have a common assembly/project that has several abstract classes. When I create a new assembly, the developer should derive from MathProblem and MathProblemTemplate<T> classes.

So, I guess the class MathProblemTemplate can be internal, I mean when you plan to set a base class to a concrete class, not show in intellisense the class MathProblemTemplate, but yes for 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(); 
}

Is this possible?

4

1 に答える 1

3

できません。理由はMathProblemTemplate<T>パブリックであるため、継承元のクラスもパブリックである必要があります。

MathProblemTemplateその中のコードを削除してに移動するだけですMathProblemTemplate<T>

于 2012-10-12T22:30:47.847 に答える