19.06.2006, 10:40 | #61 |
Участник
|
Цитата:
Сообщение от belugin
*вы не сможете создать объект без запуска конструктора
*посмотрите на erpkb "запуск и остановка". class MyClass { private MyClass() { DoSomeBlabla(); } private static MyClass _this = new MyClass(); public static MyClass GetInstance() { return _this; } } _this конечно же сам не проинициализируется, нужно попросить ClassLoader загрузить этот класс, но вот на момент загрузки произоёдет инициализация. Конечно, лучше чем пример для автоматических объектов в С++ ничего нету... Ну ладно, давайте так. Есть ли в системе класс, виртуальный метод которого я могу перекрыть и это гарантирует мне то что мой код вызовется в момент инициализации клиентской части? Application.startUp (startupPost?!!!) для этих целей подходит? О! Может кто знает asp, так вот там можно было в файле Global.asa написать свой Application_OnStart или Session_OnStart, и все мои подготовки проинициализируются там. Это конечно в явном виде получается, но хотя бы так. Последний раз редактировалось batiskaf_new; 19.06.2006 в 10:45. |
|
19.06.2006, 10:55 | #62 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от batiskaf_new
Есть ли в системе класс, виртуальный метод которого я могу перекрыть и это гарантирует мне то что мой код вызовется в момент инициализации клиентской части? Application.startUp (startupPost?!!!) для этих целей подходит?
infolog.startup() - инициализация клиентской части сессии application.startup() - инициализация серверной части сессии если надо чтоб оъект жил на AOS - то application, если чтобы на клиентской машине - infolog аналога Application_OnStart нет |
|
|
За это сообщение автора поблагодарили: batiskaf_new (1). |
19.06.2006, 11:16 | #63 |
Участник
|
в коде infolog.startup() написано для этих целей использовать startupPost ? И еще, очень меня смущает программирование в системных классах, у меня каждый чих практически таким образом производится, с ужасом думаю как это все будет распространяться... Сложно было этим Навижн преджусмотреть какие то адаптеры, которыми нужно напичкать систему? Ну ладно, допустим.
И еще объясните мне такую вещь. Вот если я меняю какой нибудь класс из AOT\Classes то изменения можно сохранить в файле .xpo, и затем импортировать, допустим что такой вариант для меня приемлимый. А вот если я переписываю отдельные методы класса Info, класс ведь системный, class defenition его вообще не открыть, только метод startupPost. Как потом эти изменения сохранить в отдельный файл, чтобы потом импортировать в АОТ на другом компе (допустим что этот комп в другой компании, наши АОТ не связаны). Опс! Инфо класс я не заметил в АОТ, он был не по алфавитному порядку а в конце списка, вторая часть вопроса снимается... Последний раз редактировалось batiskaf_new; 19.06.2006 в 11:33. |
|
19.06.2006, 11:38 | #64 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от batiskaf_new
в коде infolog.startup() написано для этих целей использовать startupPost ? И еще, очень меня смущает программирование в системных классах, у меня каждый чих практически таким образом производится, с ужасом думаю как это все будет распространяться... Сложно было этим Навижн преджусмотреть какие то адаптеры, которыми нужно напичкать систему? Ну ладно, допустим. И еще объясните мне такую вещь. Вот если я меняю какой нибудь класс из AOT\Classes то изменения можно сохранить в файле .xpo, и затем импортировать, допустим что такой вариант для меня приемлимый. А вот если я переписываю отдельные методы класса Info, класс ведь системный, class defenition его вообще не открыть, только метод startupPost. Как потом эти изменения сохранить в отдельный файл, чтобы потом импортировать в АОТ на другом компе (допустим что этот комп в другой компании, наши АОТ не связаны).
перекрывая методы xInfo (вот он как раз полностью системный и закрытый) вы их пишите их реализацию в классе Info - там все замечательно открывается и экспортируется, включая ClassDeclaration. глобальная переменная infolog ссылается на экземпляр Info (не xInfo - он абсрактный базовый). Ядро же для своих нужд использует интерфейс от xInfo И еще будьте осторожнее с вставкой своего кода в методы стартапа - при определенных ошибках в этом коде (у меня был случай с ошибкой вызывавшей трассровку стека) то можно полностью загробить приложение - вы в него просто не зайдете. Бояться не надо, но тестрировать стоит потщательнее, чем "обычный" код Последний раз редактировалось db; 19.06.2006 в 11:43. |
|
19.06.2006, 11:57 | #65 |
Участник
|
Цитата:
Сообщение от db
И еще
будьте осторожнее с вставкой своего кода в методы стартапа - при определенных ошибках в этом коде (у меня был случай с ошибкой вызывавшей трассровку стека) то можно полностью загробить приложение - вы в него просто не зайдете. Бояться не надо, но тестрировать стоит потщательнее, чем "обычный" код Пока что решил весь этот код оборачивать в обработчике исключений. |
|
19.06.2006, 12:10 | #66 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от batiskaf_new
Ценные замечания, только что подумал что если я не проверю null reference или еще чего то аксапта просто не откроется. И что, нет никакой возможности поднять последнюю рабочую конфигурацию?
Пока что решил весь этот код оборачивать в обработчике исключений. если сломается скопировать все взад (если копировали только aod, то перед запуском приложения грохнуть все индексные файлы (delindex.bat)) |
|
19.06.2006, 12:17 | #67 |
Участник
|
или добавить SysStartupCmd тогда ваш код будет вызываться только с ключиком
|
|
19.06.2006, 20:11 | #68 |
Участник
|
Цитата:
Сообщение от batiskaf_new
Всем привет, давно не виделись.
И указывайте нормальное название. Пожалуйста. |
|
20.06.2006, 11:49 | #69 |
Участник
|
Цитата:
Сообщение от mazzy
У меня большая просьба - открывайте новые ветки для новой темы.
И указывайте нормальное название. Пожалуйста. |
|
Теги |
crm2011 |
|
|