Est-il possible de conditionnellement cacher les propriétés au moment de la compilation en .Net?

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

Question

Selon une directive préprocesseur, je veux mettre toutes les propriétés dans une classe à EditorBrowsableAttribute.Never.

Je pensé à créer un attribut personnalisé, dérivé de EditorBrowsableAttribute, mais malheureusement, cette classe est scellé.

J'ai eu un coup d'œil à ICustomTypeDescriptor, mais dans la méthode GetProperties, je peux mettre la main sur chaque descripteur de propriété, mais les attributs de collection est en lecture seule.

Toutes les idées?

Était-ce utile?

La solution 2

Je suis tombé sur cette question encore récemment et cette fois la réponse est venue me très rapidement; tout simplement mis en place deux constantes:

Friend Class CompilerUtils

#If HideCode Then
    Public Const Browsable As EditorBrowsableState = EditorBrowsableState.Never 
    Public Const BrowsableAdvanced As EditorBrowsableState = EditorBrowsableState.Never 
#Else
    Public Const Browsable As EditorBrowsableState = EditorBrowsableState.Always
    Public Const BrowsableAdvanced As EditorBrowsableState = EditorBrowsableState.Advanced
#End If

End Class

Ensuite, dans votre code, décorer un membre comme ceci:

<EditorBrowsable(CompilerUtils.Browsable)> _
<EditorBrowsable(CompilerUtils.BrowsableAdvanced)> _

Autres conseils

Une approche consiste à utiliser explicitement la syntaxe #if

#if SOMECONDITION
[EditorBrowsable(EditorBrowsableState.Never)]
#endif
public int SomeProperty { get; set; }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top