21

したがって、DLL に抽象基本クラスとそのクラスの子クラスがあります。子を公開したいのですが、ベースを非公開にして、dll の外部からアクセスできないようにします。

それ、どうやったら出来るの?

4

3 に答える 3

36

あなたはしませんし、できません。

クラスを として公開する場合public、基本型は である必要がありますpublic。もう 1 つのオプションは、 を持ち、public interfaceを介してのみ型を公開することですinterface(おそらく、インスタンスを作成するためのファクトリ メソッドを使用します)。

最後のオプションの 1 つは、基本クラスを継承するのではなくカプセル化することです。

于 2012-11-07T13:08:16.180 に答える
18

それpublicを作成し、すべてのコンストラクターを作成しinternalます(デフォルトのコンストラクターを使用している場合は、パラメーターなしのコンストラクターを追加してそれをオーバーライドします)。

次に、公開されて封印されていない間は、外部コードでサブクラス化することはできません。

于 2012-11-07T14:39:05.790 に答える
2

@Marc Gravelの回答に対するコメントで私が言ったことを明確にするために

public ChildClass : ParentClass
{

}

public ParentClass
{
   internal void MethodIdontWantToExpose()
  {

  }

}

interfaceはいえ、おそらく最良の解決策です

于 2012-11-07T13:14:05.557 に答える