在PropertyGrid中显示属性类

时间:2014-10-13 07:00:54

标签: c# winforms inheritance attributes propertygrid

我正在开发一个项目,我已经制作了以下类布局,我需要在PropertyGrid上显示它:

Bar.cs: 此属性存储Foo类的信息,我的代码具有更多特定于应用程序的属性,但仅使用字符串,bools或枚举

[TypeConverter(typeof(ExpandableObjectConverter)]
class Bar : Attribute
{
    public string Author = "Unknown";
    public string Description = "Unknown";
}

Foo.cs: 这是我的应用程序的基类,并且具有Bar属性以公开有关类的信息,这很好用,因为this.GetType()返回实例的类型,而不是它定义的类。

[Bar(Author="Someone",Description="Base class")]
class Foo
{
    public int MyInt {get;set;}
    [Browsable(true)]
    public Bar MyBar
    {
        return (Bar)Attribute.GetCustomAttribute(this.GetType(), Typeof(Bar));
    }
}

AnotherClass.cs: 此类继承自Foo,但使用Bar属性公开有关类

的信息
[Bar(Author="NotMe",Description="Derived class")]
class AnotherClass : Foo
{
}

现在我想在PropertyGrid上显示Foo类(或派生),到目前为止工作正常,直到我想显示Bar属性,因为它只显示'TypeId'属性。我首先拥有MyBar属性的原因是因为我发现它是一种在运行时获取类属性的简单方法(如果GetCustomAttribute()返回null,则get代码将返回属性的默认实例,而不是这里显示)。我是否需要制作自己的TypeConverter,或者我在某个地方缺少某个属性?

感谢您阅读我的问题

0 个答案:

没有答案