.NETのコンパイル時間に条件付きでプロパティを非表示にすることは可能ですか?

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

質問

プリプロセッサディレクティブに応じて、クラス内のすべてのプロパティを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; }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top