Можно ли условно скрывать свойства во время компиляции в .NET?

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

Вопрос

В зависимости от препроцессорной директивы, я хочу установить все свойства в классе для редактора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; }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top