2017-04-03 9 views
0

私はWindowsフォームアプリケーション用に作成しているDLLを持っています。これを実行する方法はありますレイアウトは、私がにDLLのみ輸出class Bをしたい、このWinForms Export UserControl派生クラス、中間クラスではありません

public class A : UserControl 
{ 
    protected C c; 
} 

public class B : A { } 

public class C { } 

ような小さなものになりますが、私はAまたはCからパブリック修飾子を削除するかどうかはコンパイルされません?削除するパブリックから

エラー:

Error CS0060 Inconsistent accessibility: base class 'A' is less accessible than class 'B' 
+0

なぜこれをやりたいですか?どのような問題を解決しようとしていますか? – itsme86

+0

@ itsme86ほとんどの場合、プロジェクトにインポートすることを簡略化するために顧客が知る必要のないものが隠されています。 – Cody

答えて

2

あなたがタイプのアクセシビリティレベルがメンバーの、または別のタイプのアクセシビリティレベルに依存しているかどうかを確認し、宣言で型を指定します。たとえば、直接基底クラスは、少なくとも派生クラスほどアクセス可能でなければなりません。

通常、他人から「もの」を隠すために、あなたがしているのは、パブリックインターフェイスを提供し、すべてのサブクラスを隠すことです。あなたが提供する公立の工場でクライアントが具体的なクラスを作成できるようにすることができます。

関連する問題