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