是否可以在.NET中有条件地将属性隐藏在编译时?
-
30-09-2019 - |
题
根据预处理器指令的不同,我想将类中的所有属性设置为EditorBrowsableAttribute.never。
我考虑过创建从EditorBrowsableAttribute派生的自定义属性,但不幸的是,该类已密封。
我已经看过IcustomTypedScriptor,但是在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