4

次のことを行う方法はありますか?属性引数は定数式でなければならないことがわかりましたが、これをどのように回避しますか?バインディングを使用して一部のプロパティをdatagridviewにロードしたくない場合、次善の選択肢は何ですか?

  class TestObj
  {
     private bool isBrowsable = false;

     [Browsable(isBrowsable)]
     public string String1
     {
        get
        {
           return "Foo";
        }
     }
     [Browsable(isBrowsable)]
     public string String2
     {
        get
        {
           return "Baz";
        }
     }
  }
4

3 に答える 3

7

ICustomTypeDescriptorインターフェイスを実装することで、実行時に動的なカスタムタイプ情報を提供できますが、これは、プロパティを属性で装飾するほど単純ではないため、かなりの作業です。

于 2009-07-07T16:55:54.760 に答える
3

ランタイムについては、おそらく ICustomTypeDescriptor を見ていると思います。コンパイル時の決定である場合は、コンパイラ ディレクティブを使用できます。


 #define ISBROWSABLE
 #if ISBROWSABLE
 [your attribute]
 #endif

于 2009-07-07T17:12:34.350 に答える