Показать сообщение отдельно
Старый 24.02.2009, 14:13   #8  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
887 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Быть может уже кто-нибудь сделал подобное, но рискну выложить ...

В RunBase добавляем метод
X++:
boolean checkContainmentTypes(container a, container b)
{
    int i;

    if(conlen(a) != conlen(b)) return false;

    for(i = 1;i<=conlen(a);i++)
    {
        if(typeof(conpeek(a,i)) != typeof(conpeek(b,i))) return false;
    }

    return true;
}
pack() наследника RunBase приобретает вид
X++:
public container pack()
{
    return [#list];
}
unpack() наследника RunBase приобретает вид
X++:
public boolean unpack(container packedClass)
{
    if(this.checkContainmentTypes([#list], packedClass))
        [#list] = packedClass;
    else 
        info(@'Сохраненный набор параметров для данного объекта не совпал по структуре с требуемым - значения восстановлены по умолчанию.');

    this.init();

    return true;
}
Не болит голова о версиях контейнера параметров - теперь версии никому никуда не уперлись.
Не болит голова о мусоре в SysLastValue - его просто не будет, ибо перезатрется .
Не болит голова о необходимости чистить SysLastValue - ибо просто не от чего его чистить.

P.S. И никакого хакерства и нелепых телодвижений по чистке всякого от всякого
P.P.S. И эцилоп не будет бить по ночам ... никогда ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 24.02.2009 в 14:25.
За это сообщение автора поблагодарили: EVGL (2), aidsua (1).