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