Como posso impedir uma classe pública que fornece métodos de extensão de aparecer no IntelliSense?

StackOverflow https://stackoverflow.com/questions/295287

Pergunta

Existe alguma maneira de 'esconder' o nome de uma classe, cujo único propósito é fornecer métodos de extensão, de Intellisense?

Eu gostaria de remover o nome da classe da lista Intellisense, mas precisa dos métodos de extensão da classe de estar disponível para montagens externas via Intellisense da maneira usual.

Foi útil?

Solução

Ok, eu tenho a resposta para isso. sugestão de marcar a classe com o Hallgrim ..

[EditorBrowsable(EditorBrowsableState.Never)]

.. realmente funciona, mas apenas quando o montagem está sendo referenciado, ao invés do projeto, como seria o caso na minha própria solução VS enquanto escrevendo o assembly que fornece a classe. Os métodos de extensão estão disponíveis como de costume.

Outras dicas

Eu esperava que você pudesse para isso com o atributo EditorBrowsable:

[EditorBrowsable(EditorBrowsableState.Never)]
static class MyExtensions { }

Infelizmente, este não parece trabalho.

Você quer dizer que você quer esconder a classe, ou os métodos de extensão?

Se você colocar a classe estática em seu próprio namespace, então qualquer código que não importa que namespace com uma utilizando directiva não vai "ver" os métodos de extensão.

Se você colocar seus métodos de extensão em um módulo existe um atributo chamado HideModuleName que vai esconder o nome do módulo de aparecer no IntelliSense.

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