.NETのコンパイル時間に条件付きでプロパティを非表示にすることは可能ですか?
-
30-09-2019 - |
質問
プリプロセッサディレクティブに応じて、クラス内のすべてのプロパティをeditorBrowsAblEattribute.neverに設定したいと思います。
EditorBrowsAblEattributeから派生したカスタム属性を作成することを考えましたが、残念ながらそのクラスは封印されています。
icustomtypedescriptorを見てきましたが、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)> _
他のヒント
1つのアプローチは、明示的に使用することです #if
構文
#if SOMECONDITION
[EditorBrowsable(EditorBrowsableState.Never)]
#endif
public int SomeProperty { get; set; }
所属していません StackOverflow