2009-03-05 16 views
3

私はDesign-Time Attributes for Componentsについて少しお伝えしました。そこで、CategoryAttributeという属性が見つかりました。C#:CategoryAttribute.Appearanceプロパティの使用方法

そして、共通カテゴリの数を示しています。そのページ上では、

CategoryAttributeクラスには、次の一般的なカテゴリを定義することを言います。そのうちの1つは、たとえばAppearanceです。私は、素晴らしいと思った!それで[Category("Appearance")]の代わりに[Category.Appearance]を使うことができます!しかし、明らかに私はできませんでしたか?それを書こうとしましたが、Intellisenseはそれを取り上げず、コンパイルしませんでした。私はここに何かを逃していますかそれらのプロパティがあったのではないでしょうか?もしそうでなければ、彼らは何のためですか?もしそうなら、どうやって使うの?

はい、私は正しいusingにアクセスしてCategoryAttributeにアクセスすると、[Category("Whatever")]が機能します。私はこれらの定義された共通のカテゴリをどのように使うのだろうかと思っています。

答えて

3

MSDNで見てきたように、それはセッターではなくゲッタープロパティです。実際に

public static CategoryAttribute Appearance { get; } 

、ここでのコードは、反射板を使用して、次のようになります。

public static CategoryAttribute Appearance 
    { 
     get 
     { 
      if (appearance == null) 
      { 
       appearance = new CategoryAttribute("Appearance"); 
      } 
      return appearance; 
     } 
    } 

だから、たくさんの一体を行いません。私はそれを見ることができます

のみ使用することは、このようなものです:

  foreach (CategoryAttribute attrib in prop.GetCustomAttributes(typeof(CategoryAttribute), false)) 
      { 
       bool result = attrib.Equals(CategoryAttribute.Appearance); 
      } 

クラスを見てリフレクションを使用した場合、基本的に、あなたは簡単に行うことなく、これがどのカテゴリに属する​​かを確認することができます文字列の比較。しかし、あなたは残念なことにその方法で使用することはできません。

+0

hm、それは単なる迷惑な... heheです。一方の端でのみ使用可能な場合、定数で定義された属性内のポイントは何ですか?しかたがない。情報ありがとう: – Svish

+0

あなた自身のカテゴリークラスを作成することができるかもしれません。見てください[ここ](http://weblogs.asp.net/sfeldman/archive/2009/05/07/categoryattribute.aspx) –

2

staticプロパティは、CategoryAttribute.Appearanceを介してアクセスします。しかし、属性システムでは、属性宣言でコードを呼び出すことはできません。なぜなら、それがあなたのためにコンパイルされない理由です。あなたはおそらく[Category( "Appearance")]を解決する必要があります。

関連する問題