Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание копии класса, Какой оптимальный вариант? 
V
    Опции темы
agealex
Дата 21.6.2011, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 2.9.2007

Репутация: нет
Всего: нет



Язык С#  фреймворк 3.5 

Имеется :

1 Класс - рукописный (другим человеком, динамически изменяемый, состоящий из множества классов), у него нет каких-либо функций его копирования встроеных, и я не могу ничего в нем менять.

Нужно : 

Сделать его независимую копию  ( для проверки наличия изменений в ходе работы)


Вопрос как это сделать ?

Сразу скажу что простым поочередным копированием всех переменных  - вариант не подходит.

Пока рассматриваю варианты с Сериализацией или через MemoryStrem, еслиесть идеи по лучше буду рад.

Добавлено через 14 минут и 33 секунды
Все вопрос решен, варианты решения  - кому как:

1. Реализовать интерфейсу IClonable и явно вызывать Clone
2. Сделать конструктор копий
3. Переделать в структуру


Ссылка на похожую тему с примерами
PM MAIL   Вверх
mrbrooks
Дата 22.6.2011, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



еще не плох вариант с сериализацией.
что касательно переделать в структуру - то это очень спорный факт.
PM MAIL   Вверх
agealex
Дата 22.6.2011, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 2.9.2007

Репутация: нет
Всего: нет



еще есть вариант с MemberwiseClone MSDN ? что не требует ни каких дополнительных наследований и создает копию сех статических челенов класса.

Но к большому сожалению все эти методы, за исключением сериализации не позволили скопировать класс со множеством вложенных классов и списков вложенных классов в классы.
Так как все равно требуют поочередной инициализации каждой интересующей переменной.

В обещем да здравствует сериализация - медленно но эффективно!

а насчет струткур - подходит для малых классов , если ну очень надо - так как они статичн

Это сообщение отредактировал(а) agealex - 22.6.2011, 15:46
PM MAIL   Вверх
ДобренькийПапаша
Дата 24.6.2011, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Ну и так, кстати, если класс реализует ICloneable, то неплохо бы его декорировать собственным атрибутом, указывающим на то - происходит ли поверхностное или глубокое копирование.

В противном случае - плохой стиль.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0410 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.