Цитата:
Сообщение от
mazzy
pack/unpack используется и при передаче объекта между клиентом/сервером.
видимо ради этого случая и было сказано про RunOn = Server. )))
Постановка задачи в данном случае достаточно простая - организовать обработку данных классом на сервере. Решение с изменением свойства класса было принято разработчиком. Решение это не совсем правильное, так как в данном случае pack/unpack для передачи данных класса между клиентом и сервером использоваться не будет, потому что этим значением свойства в принципе запрещается создание экземпляра класса на клиенте. Кому передавать то?

Для правильной работы такого вот механизма минимизации обменов между клиентской (диалоговой) частью и серверной (рабочей) частью RunBase нужно чтобы класс можно было создать как на клиенте, так и на сервере (т.е. CalledFrom = RunOn), а на главный экземпляр на сервере создавать либо в коде, либо, например, через MenuItem с соответствующим свойством.
Цитата:
Сообщение от
DSPIC
Вариант 3: там где-то метод можно перекрыть, что-то вроде allowSaveLast (либо метод, либо переменная, объявленная на уровне RunBase). Но, если не ошибаюсь, это поломает передачу параметром клиент/серер. Стоит проверить.
Не поломает. Передача клиент-сервер использует promptPack/promptUnpack, а SysLastValue - свои saveLast и loadLast. Если уж совсем не хочется сохранять параметры класса, достаточно перекрыть RunBase.lastValueElementName и в нем возвратить пустую строку (по крайней мере в четверке так).
Цитата:
Сообщение от
DSPIC
Вариант 4: я бы шел классическим путем:
- сохраняем вашу переменную в pack/unpak как положено.
- в диалоге аналогично, стандартно, чтобы инициализировалось переменной.
- в методе main, принудительно вызываем getLast(), после чего обнуляем переменную. Вы же написали parm метод?

- ну и все. getLast() второй раз не вызывается, так задумано. Будущему программисту вы этим явно покажете, что сделано это осознанно. Универсальность класса сохранится - овцы сыты, волки целы.
Ну, собственно, да - классика. Только getLast можно вызвать даже в new, чтобы не тащить эту особенность наружу (хоть и в main).