Пълно копие на обекта - стек преливане на Руски

Освен това, свойствата на обекта могат да се съхраняват в неочаквани места. Например, прикрепени свойства се съхраняват на място, не е достъпна за размисъл, като копие на обекта, без да знае нищо повече.

Защото чрез родител / Деца достъпен главен елемент, а след това на всички елементи, които ще трябва да се клонира целия прозорец. Защото DataContext е достъпна чрез ВМ, а след това в същото време трябва да се prohvatit и нея. И защото има връзки към VM модел, като по този начин ще вземат със себе си всички документи за кандидатстване. Включително, между другото, на полето, който съхранява историята на промените.

Тогава там е набор от предмети, които в основата си не са клонирани. Отворете файла? Socket? Zalochenny Monitor (известен още като заключване)? А хвърлен изключение? Всеки Сингълтън от вашата програма? Type. Участник? те всички skloniruyutsya.

Какво е наистина необходимо. Необходимо е да се представи състоянието на програмата или нейни части, използвайки VM- и моделни обекти. Ако искате да ги спаси, че има смисъл да се направят тези обекти immutabelnymi, че не е имало опасност от тяхното състояние ще се промени, след като сте запазили копие. (Сделка с неизменните-обекти, те са лесно да се напише, така че, когато промените парчета източник на обектите се използват повторно. Ако всички парчета неизменни, те могат да се използват навсякъде, без да е необходимо за клониране по същия начин.)

На следващо място, вашата Вижте трябва стриктно следват модела MVVM, и ще покаже състоянието на VM, без никакви реклами libbing и инсталиране на важни фигури в кода след себе си. В същото време състоянието на вашата View ще бъде напълно определя от състоянието на VM, и следователно, трябва да се помни View ще изчезне.

В този случай, само обектите, които трябва да помнят (не клонирана, а именно да се помни!) - текущото състояние.