Создайте собственный CollectionEditor для работы с обертками, но не с объектами напрямую - PullRequest
0 голосов
/ 23 января 2019

У меня есть массив объектов, которые я хочу передать в 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 []' ».

Есть ли способ это исправить? Я все делаю правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...