创建自定义CollectionEditor以使用包装器,但不能直接与对象一起使用

时间:2019-01-23 09:56:51

标签: c# propertygrid collectioneditor

我有一个要传递给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 [] '”。

是否可以解决该问题?我根本做对了吗?

0 个答案:

没有答案
相关问题