Задать вопрос
@Toshegg

Как клонировать системный объект в C#?

Здравствуйте!
Я пробую написать мульти-буфер обмена для курсовой. Он работает по следующему принципу: нажимаем Ctrl+C, копируем любой объект в системный буфер (Clipboard), далее с помощью Clipboard.GetDataObject () получаем скопированный объект, и кладем его в массив внутри синглтона (DataObject [] myBuffer). Код:
public void SetData (DataObject data, int index) {
myBuffer [index] = data; }
Обнаружил следующую проблему: все объекты в C# передаются по ссылке, по этому при заполнении моего буфера новым элементом все старые (которые я записал до этого) заменяются на новый добавленный элемент. По сути задача состоит в том, чтобы передать объект Clipboard.GetDataObject() в моей метод SetData по значению, а не по ссылке. Пробовал реализовать интерфейс IClonable для DataObject, но ничего не получилось. Подскажите пожалуйста методы для решения моей проблемы. Заранее спасибо!
  • Вопрос задан
  • 303 просмотра
Подписаться 1 Оценить 2 комментария
Ответ пользователя Артур Нуруллин К ответам на вопрос (2)
Splo1ter
@Splo1ter
.NET Developer (9 years+)
Попробуйте MemberwiseClone, он клонирует рекурсивно объект, соответственно вы имеете не ссылку на объект, а новый объект.
Надеюсь я правильно понял ваш вопрос =)
Но проверьте, у меня есть сомнения что если у копируемого объекта внутри будет ссылка на другой объект то это не сработает.
Ответ написан