class BaseClass {...}
public class MyClass: BaseClass {...} // Error
http://msdn.microsoft.com/en-us/library/cx03xt0t.aspx
これはC#言語仕様で言及されており、これは完全に理にかなっています。なぜなら、あなたの場合、パブリッククラスは、基本クラスである非パブリッククラスのアクセスを許可するパブリックアクセシビリティレベルの「パブリック」コンテキストで使用でき、これは間違った行動になります。
C# 言語仕様 5.0 によると:
( http://www.microsoft.com/en-us/download/details.aspx?id=7029から仕様をダウンロードしてください)
次のアクセシビリティ制約が存在します。
• クラス型の直接の基本クラスは、少なくともクラス型自体と同じくらいアクセス可能である必要があります。
• インターフェイス タイプの明示的な基本インターフェイスは、少なくともインターフェイス タイプ自体と同じくらいアクセス可能である必要があります。
• デリゲート型の戻り値の型とパラメーターの型は、少なくともデリゲート型自体と同じくらいアクセス可能である必要があります。
• 定数の型は、少なくとも定数自体と同じくらいアクセス可能でなければなりません。
• フィールドのタイプは、少なくともフィールド自体と同じくらいアクセス可能である必要があります。
• メソッドの戻り値の型とパラメーターの型は、少なくともメソッド自体と同じくらいアクセス可能である必要があります。
• プロパティのタイプは、少なくともプロパティ自体と同じくらいアクセス可能である必要があります。
• イベントのタイプは、少なくともイベント自体と同じくらいアクセス可能である必要があります。
• インデクサーの型とパラメーターの型は、少なくともインデクサー自体と同じくらいアクセス可能である必要があります。
• 演算子の戻り値の型とパラメータの型は、少なくとも演算子自体と同じくらいアクセス可能でなければなりません。
• インスタンス コンストラクターのパラメーターの型は、少なくともインスタンス コンストラクター自体と同じくらいアクセス可能である必要があります。