したがって、DLL に抽象基本クラスとそのクラスの子クラスがあります。子を公開したいのですが、ベースを非公開にして、dll の外部からアクセスできないようにします。
それ、どうやったら出来るの?
したがって、DLL に抽象基本クラスとそのクラスの子クラスがあります。子を公開したいのですが、ベースを非公開にして、dll の外部からアクセスできないようにします。
それ、どうやったら出来るの?
あなたはしませんし、できません。
クラスを として公開する場合public
、基本型は である必要がありますpublic
。もう 1 つのオプションは、 を持ち、public interface
を介してのみ型を公開することですinterface
(おそらく、インスタンスを作成するためのファクトリ メソッドを使用します)。
最後のオプションの 1 つは、基本クラスを継承するのではなくカプセル化することです。
それpublic
を作成し、すべてのコンストラクターを作成しinternal
ます(デフォルトのコンストラクターを使用している場合は、パラメーターなしのコンストラクターを追加してそれをオーバーライドします)。
次に、公開されて封印されていない間は、外部コードでサブクラス化することはできません。
@Marc Gravelの回答に対するコメントで私が言ったことを明確にするために、
public ChildClass : ParentClass
{
}
public ParentClass
{
internal void MethodIdontWantToExpose()
{
}
}
とinterface
はいえ、おそらく最良の解決策です