私はいくつかのプロジェクトで解決策を持っています
最初に、アセンブリ名 = B、デフォルトの名前空間 = B ソース コードで、名前空間 BC でいくつかのクラスを定義します コンパイル エラーなし
ここで、すべてのアセンブリ名を B から A に変更し、デフォルトの名前空間は B のままです
次に、コンパイルエラーが発生します。保護レベルが原因であると言われています
これについて何か考えはありますか?
私はいくつかのプロジェクトで解決策を持っています
最初に、アセンブリ名 = B、デフォルトの名前空間 = B ソース コードで、名前空間 BC でいくつかのクラスを定義します コンパイル エラーなし
ここで、すべてのアセンブリ名を B から A に変更し、デフォルトの名前空間は B のままです
次に、コンパイルエラーが発生します。保護レベルが原因であると言われています
これについて何か考えはありますか?
ほとんどの場合、クラスの可視性識別子(ご存知のとおり、それらすべてなど)を省略しpublic
ましprotected
たprivate
。デフォルトでは、私が誤解していない場合、クラスの可視性宣言を省略した場合、C#はそれを想定しているためinternal
(SOにはそれについての良い質問があります)、呼び出し元のメソッドには表示されません。
最も簡単な方法は、これらのクラスをパブリックとして明示的にマークすることです。
public class YOURCLASSNAME {
//other stuff you have
}
ただし、クラスを公開することが自分の場合に意味があるかどうかを検討する必要があります。カプセル化OOPの原則は、(ある程度)すべてを宣言することを避けなければならないことを意味しますpublic
。
とにかく、いくつかのコードサンプルはこの質問を答えられる質問にすることができます。今では推測と精神的なデバッグです。