web-dev-qa-db-ja.com

クラスライブラリの内部型のみを含む名前空間を非表示にしますか?

内部型のみを含む名前空間がいくつかあるクラスライブラリがあります。

ただし、アプリケーションプロジェクトでクラスライブラリを使用する場合、名前空間はインテリセンスで表示されますが、もちろん空です。他のプロジェクトでインテリセンスを使用するときに名前空間を完全に非表示にする方法はありますか?

EditorBrowsableAttributeをすべての内部クラスにも適用しようとしましたが、それを名前空間に適用したいのですが、これはもちろん不可能です。

または、これを十分に気にかけている場合、パブリックタイプを含む名前空間にタイプを移動するだけでよい唯一のオプションですか?

クラスライブラリをどのように参照しているかによって異なります。

  • ソリューションにクラスライブラリプロジェクトが含まれていて、プロジェクト参照を使用している場合は、Intellisenseを介してその空の名前空間が常に表示されます。
  • クラスライブラリのコンパイル済みdllを参照している場合、内部メンバーのみが含まれていれば、名前空間がインテリセンスでポップアップ表示されることはありません。

これを試して:

namespace ClassLibrary1
{
    namespace Internal
    {
        internal class InternalClass
        {
            public int internalStuff { get; set; }
        }
    }

    namespace Public
    {
        public class PublicClass
        {
            public int publicStuff { get; set; }
        }
    }
}

プロジェクト参照を介してこれを参照すると、空の名前空間が表示されます。あなたがそれのdllを参照するならば、あなたはそうしません。

51
takrl

私は以前にこれに直面しましたが、解決策は見つかりませんでした。プロジェクトで機能する場合と機能しない場合がある回避策のみが見つかりました。名前空間を定義する代わりに、ネストされた静的クラスを使用できますか?

7
James L