Подтвердить что ты не робот

Скрытие пространств имен, содержащих только внутренние типы в библиотеке классов?

У меня есть библиотека классов, которая имеет пару пространств имен, содержащих только внутренние типы.

Однако при использовании библиотеки классов в проекте приложения пространства имен отображаются в intellisense, но, конечно, они пусты. Есть ли способ полностью скрыть пространства имен при использовании intellisense в других проектах?

Я попытался применить EditorBrowsableAttribute ко всем внутренним классам, но то, что я хотел бы сделать, это применить это к пространству имен, что, конечно, невозможно.

Или, если мне это все равно, единственный вариант, который я должен просто переместить типы в пространство имен, которое содержит общедоступные типы?

4b9b3361

Ответ 1

Это зависит от того, как вы ссылаетесь на свою библиотеку классов:

  • Если у вас есть проект библиотеки классов, содержащийся в вашем решении, и используйте ссылку на проект, вы всегда увидите пустое пространство имен через Intellisense.
  • Если вы ссылаетесь на скомпилированную dll вашей библиотеки классов, вы не увидите пространство имен, появившееся в intellisense, если оно содержит только внутренние члены.

Попробуйте следующее:

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

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

Если вы ссылаетесь на это с помощью ссылки на проект, вы увидите пустое пространство имен. Если вы ссылаетесь на DLL, вы не будете.

Ответ 2

Я столкнулся с этим раньше и не нашел решения, которое может или не может работать в вашем проекте. Вместо определения пространства имен вы можете использовать вложенный статический класс?