C#:如何使用CategoryAttribute.Appearance属性
我读了一点有关这方面的书。在那里,我发现了一个名为的属性。那一页上写着 CategoryAttribute类定义了以下常见类别: 然后列出了一些常见的类别。例如,其中一个是。我想,太棒了!然后我可以使用C#:如何使用CategoryAttribute.Appearance属性,c#,user-controls,attributes,windows-forms-designer,C#,User Controls,Attributes,Windows Forms Designer,我读了一点有关这方面的书。在那里,我发现了一个名为的属性。那一页上写着 CategoryAttribute类定义了以下常见类别: 然后列出了一些常见的类别。例如,其中一个是。我想,太棒了!然后我可以使用[Category.Appearance]而不是[Category(“Appearance”)]!但显然我不能?试图编写它,但Intellisense不接受它,也不编译它。我是不是遗漏了什么?难道这些房产不就是为了这个吗?如果没有,它们是干什么用的?如果是,我如何使用它们 是的,我确实有正确的,使
[Category.Appearance]
而不是[Category(“Appearance”)]
!但显然我不能?试图编写它,但Intellisense不接受它,也不编译它。我是不是遗漏了什么?难道这些房产不就是为了这个吗?如果没有,它们是干什么用的?如果是,我如何使用它们
是的,我确实有正确的
,使用访问类别属性
,因为[类别(“任何”)]
可以工作。我只是想知道如何使用这些定义的公共类别。静态属性是通过CategoryAttribute.Appearance访问的。但是属性系统不允许您在属性声明中调用代码,我想这就是为什么它不能为您编译的原因。您可能必须满足于[类别(“外观”)。正如您在MSDN上看到的,它只是一个getter属性,而不是setter属性
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);
}
基本上,当使用反射查看类时,您可以轻松地检查它属于哪个类别,而无需进行字符串比较。但是你不能以你想要的方式使用它 嗯,那真是太烦人了。。。呵呵。当常数定义的属性仅在一端可用时,它有什么意义。哦,好吧。感谢您提供的信息:)也许您可以创建自己的类别类。看一看