Я пытаюсь разрешить моим пользователям перетаскивать определенные строки данных из одного пользовательского элемента управления списком в другой, где второй элемент управления списком находится в другом экземпляре того же приложения.
DoDragDrop(parameterTypedListView.SelectedObjects, DragDropEffects.Copy);
где parameterTypedListView.SelectedObjects
- это общий IList, где T - это пользовательский класс, содержащий только значения типов в качестве полей / свойств.
В событии OnDragDrop я пытаюсь извлечь эти данные, но получаю только объект System.__ComObject
..., который, кажется, наследуется от System.MarshalByRefObject
.
Вкратце: как извлечь данные в объектно-ориентированном формате, который я действительно могу использовать?
Редактировать: Установка моего пользовательского класса как сериализуемого не имеет никакого заметного эффекта вообще. Я могу перечислить __ComObject:
foreach (var dataObject in (IEnumerable) e.Data.GetData("System.Collections.ArrayList"))
{
// this actually enumerates the correct number of times, i.e. as many times as there are items in the list.
}
но каждый dataObject сам по себе является System .__ ComObject, который я не могу привести ни к чему полезному.