Domanda

A seconda di una direttiva del preprocessore, voglio impostare tutte le proprietà in una classe a EditorBrowsableAttribute.Never.

ho pensato di creare un attributo personalizzato, derivato da EditorBrowsableAttribute, ma purtroppo quella classe è sigillata.

Ho avuto uno sguardo al ICustomTypeDescriptor, ma nel metodo GetProperties, posso entrare in possesso di ogni descrittore di proprietà, ma gli attributi di raccolta è di sola lettura.

Tutte le idee?

È stato utile?

Soluzione 2

mi è capitato in tutta la questione ancora una volta di recente e questa volta la risposta mi è venuta molto rapidamente; è sufficiente impostare un paio di costanti:

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

Poi nel codice, decorare un membro in questo modo:

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

Altri suggerimenti

Un approccio è quello di utilizzare in modo esplicito il #if sintassi

#if SOMECONDITION
[EditorBrowsable(EditorBrowsableState.Never)]
#endif
public int SomeProperty { get; set; }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top