不能从内部课堂公开上课?

jok*_*der 4 c#

我有一个内部课:

internal abstract class Reader
{
    //internal abstract void methods
}
Run Code Online (Sandbox Code Playgroud)

我不能上这堂课:

public abstract class CustomFileReader : Reader
{
}
Run Code Online (Sandbox Code Playgroud)

因为它比它继承的类更明显.我想这样做是为了强制你必须继承Reader类的公共可访问的继承者而不是基类.这是可能的还是我必须暴露基类?

Jon*_*eet 11

您不能在internal类的继承树中拥有一个public类,但是您可以通过创建内部的唯一构造函数强制用户派生CustomFileReader而不是:ReaderReader

public abstract class Reader
{
    internal Reader()
    {
    }
}

public abstract class CustomFileReader : Reader
{
    // Public and protected constructors here
}
Run Code Online (Sandbox Code Playgroud)

现在,任何试图直接从Reader程序集外部继承的东西都会被告知无法找到可访问的基类构造函数.