Pergunta

Eu tenho uma biblioteca de classe que tem um par de namespaces contendo apenas tipos internos.

No entanto, quando se utiliza a biblioteca de classes em um projeto de aplicativo, os namespaces mostra-se em intellisense, mas é claro que eles estão vazios. Existe alguma maneira para eu me esconder os namespaces completamente ao usar intellisense em outros projetos?

Eu tentei aplicar EditorBrowsableAttribute a todas as classes internas, bem como, mas o que eu gostaria de fazer seria aplicar isso ao namespace, que é, naturalmente, impossível.

Ou seja, se eu me importo o suficiente sobre isso, a única opção que tenho a apenas mover os tipos em um namespace que contém tipos públicos?

Foi útil?

Solução

Depende de como você está referenciar a sua biblioteca de classes:

  • Se você tem o projeto de biblioteca de classe contida sua solução e usar uma referência de projeto, você sempre vai ver que namespace vazio via Intellisense.
  • Se você está fazendo referência a um dll compilado de sua biblioteca de classes, você não verá o namespace aparecendo no intellisense, desde que contenha apenas os membros internos.

Tente isto:

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

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

Se você faz referência a isso através de uma referência de projeto, você verá o namespace vazio. Se você faz referência a dll dele, você não vai.

Outras dicas

Eu vim contra isso antes e não encontrou nenhuma solução, apenas uma solução alternativa que pode ou não pode trabalhar em seu projeto. Em vez de definir um espaço de nomes que você pode usar uma classe estática aninhada?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top