Можно ли условно скрывать свойства во время компиляции в .NET?
-
30-09-2019 - |
Вопрос
В зависимости от препроцессорной директивы, я хочу установить все свойства в классе для редактораBrowsableAttribute.never.
Я подумал о создании пользовательского атрибута, полученный из редактораBrowsableAttribute, но, к сожалению, этот класс герметичен.
Я посмотрел на ICUSTOMTYPEDESSCRISTOR, но в методе GetProperties я могу получить каждый дескриптор свойств, но коллекция атрибутов готовится.
Есть идеи?
Решение 2
Я повторил этот вопрос в последнее время, и на этот раз ответ пришел ко мне очень быстро; Просто настроить пару постоянных:
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
Тогда в вашем коде украсил элемент, как так:
<EditorBrowsable(CompilerUtils.Browsable)> _
<EditorBrowsable(CompilerUtils.BrowsableAdvanced)> _
Другие советы
Один подход - явное использовать #if
синтаксис
#if SOMECONDITION
[EditorBrowsable(EditorBrowsableState.Never)]
#endif
public int SomeProperty { get; set; }
Не связан с StackOverflow