Come posso impedire a una classe pubblica che fornisce metodi di estensione di apparire in Intellisense?

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

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top