我有一个要传递给CollectionEditor的对象数组。线,弧,贝塞尔曲线等。
我想让它们嵌套在另一个名为Wrapper的类中,以便用户可以更改选定的对象类型(例如,从线到弧),而不会丢失存储在当前对象实例内部的公共数据。
到目前为止,这是我所拥有的-我创建了自定义CollectionEditor
,并用属性标记了属性。
[Editor(typeof(LinkCollectionEditor), typeof(UITypeEditor))]
public LinkBase[] Links { get; set; }
下一步-我更改了EditValue
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (value is LinkBase[])
{
LinkBase[] links = value as LinkBase[];
return links.Select(o => new LinkWrapper(o)).ToArray();
}
else
return base.EditValue(context, provider, value);
}
现在,当我尝试在CollectionEditor
中打开PropertyGrid
的表单时,我收到以下消息:类型为'LinkWrapper []'的对象无法转换为类型'LinkBase [] '”。
是否可以解决该问题?我根本做对了吗?