Ist es möglich, bedingt verbergen Eigenschaften bei der Kompilierung in .net?
-
30-09-2019 - |
Frage
In Abhängigkeit von einer Präprozessordirektive mag ich alle Eigenschaften in einer Klasse EditorBrowsableAttribute.Never einzustellen.
Ich dachte über ein eigenes Attribut Erstellen von EditorBrowsableAttribute abgeleitet, aber leider diese Klasse versiegelt ist.
Ich habe einen Blick auf ICustomTypeDescriptor hatte, aber in der GetProperties Methode kann ich halten, jedes Eigenschaftendeskriptor, aber die Attribute Sammlung nur lesbar ist.
Irgendwelche Ideen?
Lösung 2
ich auf dieses Problem geschah vor kurzem wieder und diesmal die Antwort sehr schnell zu mir kam; einfach ein paar Konstanten ein:
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
Dann in Ihrem Code, dekoriert ein Mitglied wie folgt:
<EditorBrowsable(CompilerUtils.Browsable)> _
<EditorBrowsable(CompilerUtils.BrowsableAdvanced)> _
Andere Tipps
Ein Ansatz ist explizit zu verwenden, um die #if
Syntax
#if SOMECONDITION
[EditorBrowsable(EditorBrowsableState.Never)]
#endif
public int SomeProperty { get; set; }