Come posso impedire a una classe pubblica che fornisce metodi di estensione di apparire in Intellisense?
-
08-07-2019 - |
Domanda
Esiste un modo per 'nascondere' il nome di una classe, il cui unico scopo è fornire metodi di estensione, da Intellisense?
Vorrei rimuovere il nome della classe dall'elenco Intellisense ma ho bisogno che i metodi di estensione della classe siano disponibili per gli assembly esterni tramite Intellisense nel solito modo.
Soluzione
Ok, ho la risposta a questo. Il suggerimento di Hallgrim di contrassegnare la classe con ..
[EditorBrowsable(EditorBrowsableState.Never)]
..In realtà funziona ma solo dove si fa riferimento al assembly , piuttosto che al progetto, come sarebbe il caso nella mia soluzione VS mentre scrivevo l'assembly che fornisce la classe. I metodi di estensione sono disponibili come al solito.
Altri suggerimenti
Mi aspettavo che tu potessi farlo con l'attributo EditorBrowsable:
[EditorBrowsable(EditorBrowsableState.Never)]
static class MyExtensions { }
Purtroppo questo non sembra funzionare.
Vuoi dire che vuoi nascondere la classe o i metodi di estensione?
Se metti la classe statica nel suo spazio dei nomi, qualsiasi codice che non importa tale spazio con una direttiva using non " vedi " i metodi di estensione.
Se metti i tuoi metodi di estensione in un modulo c'è un attributo chiamato HideModuleName che nasconderà il nome del modulo dalla visualizzazione in Intellisense.