我有一个基类(节点)和一些继承的类型。
Class Node
{
Base_Attributes...
}
Class Derived : Node
{
Derived_Attributes...
}
这些类型位于我添加到项目中的 dll 中。还有一个类,比如说 Item,它的属性之一是 Node。我有一个 Propertygrid,我在其中显示 itme 的属性,如下所示:
Class Item
{
Point location;
String name;
Node quiddity;
bool[] IsBrowsable;
public Point Location{set;get;}
public String Name{set;get;}
public String NodeAttrib{set;get;}
[Browsable(IsBrowsable[thisindex])]
public String DerivedTypeAttribe{set;get;}
[Browsable(IsBrowsable[otheroneindex])]
public String DerivedTypeAttribe{set;get;}
Item(string type)
{
switch(type)
{
case"some":
Node = new derived_some();
IsBrowsable[thisindex] = true;
break;
}
}
}
在主窗体的某个地方:
propertygrid.selectedobject = item;
这里的问题是派生类型指定了一些属性,我需要在propetygrid中显示它们,但是节点的类型直到运行时才知道。我尝试使用布尔数组设置 Browsabl() 属性,但结果是 Browsable Parameter 需要是一个常量值。有什么想法我怎么能通过这个?