@ Reniuz спасибо за вашу помощь, она помогла мне выработать ответ.
Чтобы получить текст и данные пользовательских объектов из буфера обмена в нескольких форматах, я реализовал интерфейс IDataObject в своем собственном классе. Код для установки объекта данных должен иметь установленный флаг копирования следующим образом:
Clipboard.Clear();
Clipboard.SetDataObject(myClassThatImplementsIDataObject, true);
Для повторного получения данных стандартный текст можно получить с помощью:
Clipboard.GetText();
Данные могут быть получены с использованием метода данных:
Clipboard.GetData("name of my class");
Другой полезный момент состоял в том, чтобы проверить, что объект, который я помещаю в буфер обмена, может быть сериализован с использованием класса BinaryFormatter для выполнения этого теста ... Если выдается исключение, копирование в буфер обмена также завершится неудачно, но молча.
Итак, у меня в классе:
[Serializable]
public class ClipboardPromptsHolder : IDataObject
{
...
}