C#:CategoryAttribute.Appearanceプロパティの使用方法
-
03-07-2019 - |
質問
コンポーネントのデザイン時属性。そこで、 CategoryAttribute という属性を見つけました。そのページでは、
CategoryAttributeクラスは、次の一般的なカテゴリを定義します。
次に、いくつかの一般的なカテゴリをリストします。たとえば、外観です。素晴らしいと思いました!次に、 [Category(" Appearance")]
の代わりに [Category.Appearance]
を使用できます!しかし、どうやら私はできませんでしたか?書き込もうとしましたが、Intellisenseはそれを取得せず、コンパイルもしませんでした。ここに何かが足りませんか?多分、これらのプロパティはそうではなかったのでしょうか?そうでない場合、それらは何のためですか?ある場合、どのように使用しますか?
そしてもちろん、 CategoryAttribute
にアクセスするための正しい using
があり、 [Category(" Whatever")]
が発生します仕事する。これらの定義済みの共通カテゴリをどのように使用するのか疑問に思っています。
解決
MSDNで見ることができるように、それはゲッタープロパティであり、セッターではありません。
public static CategoryAttribute Appearance { get; }
実際、Reflectorを使用したコードは次のようになります。
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);
}
基本的に、リフレクションを使用してクラスを見ると、文字列比較を行わなくても、これが属するカテゴリを簡単に確認できます。しかし、残念ながらあなたがしようとしている方法でそれを使用することはできません。
他のヒント
静的プロパティには、CategoryAttribute.Appearanceからアクセスします。しかし、属性システムでは、属性宣言でコードを呼び出すことはできません。そのため、コンパイルされません。おそらく、[Category(" Appearance")]で解決する必要があります。