Comment empêcher une classe publique fournissant des méthodes d'extension d'apparaître dans Intellisense?

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

Question

Existe-t-il un moyen de "masquer" le nom d'une classe dont le seul but est de fournir des méthodes d'extension à Intellisense?

Je souhaite supprimer le nom de la classe de la liste Intellisense, mais les méthodes d'extension de la classe doivent être disponibles pour les assemblys externes via Intellisense de la manière habituelle.

Était-ce utile?

La solution

Ok, j'ai la réponse à cette question. La suggestion de Hallgrim de marquer la classe avec ..

[EditorBrowsable(EditorBrowsableState.Never)]

.. fonctionne réellement, mais uniquement lorsque l'assembly est référencé, plutôt que le projet, comme ce serait le cas dans ma propre solution VS lors de l'écriture de l'assembly fournissant la classe. Les méthodes d'extension sont disponibles comme d'habitude.

Autres conseils

Je m'attendais à ce que vous puissiez le faire avec l'attribut EditorBrowsable:

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

Malheureusement, cela n'a pas semblé fonctionner.

Voulez-vous dire que vous voulez masquer la classe ou les méthodes d'extension?

Si vous placez la classe statique dans son propre espace de noms, le code qui n'importera pas cet espace de noms avec une directive using ne sera pas "voir". les méthodes d'extension.

Si vous mettez vos méthodes d'extension dans un module, l'attribut HideModuleName empêche le nom du module d'apparaître dans Intellisense.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top