我正在开发一个项目,我已经制作了以下类布局,我需要在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,或者我在某个地方缺少某个属性?
感谢您阅读我的问题