|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Простой пример. Нужно чтобы один статический конструктор назначил значение некоторой глобальной переменной, а второй его считал. Соответственно нужно обеспечить, что сначало выполнится конструктор, который назначит значение, а потом уже тот, что должен считать значение - иначе он считает пустоту. Эни айдиа ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 16:37 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Есть конечно вариант с объявлением статической переменной в первом классе, но что если классы не знаю друг о друге на прямую, а передаются через интерфейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 16:38 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
архитектура с глобальными переменными вызывает сомнения, если честно но все-таки, по сабжу, просто в коде обратитесь сначала к классу с первым конструктором ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 16:42 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Шо за статический конструктор? Перменная пусть object и равна null и проверяй на null, а вообще шо за бред? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 16:43 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
А зачем тут статика? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 16:51 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
давно читал статью про чудеса со статиками. Много подводных камней насчет времени инициализации, так что я бы предпочел делать это вручную тем же статичным методом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 16:56 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
DI контейнер без всяких статиков обеспечит нужный порядок инициализации ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 16:58 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр, приведите пример того чего хотите ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 16:59 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр, Это как, два статических конструктора у типа? Инициализировать поля из статического конструктора - грех.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:02 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Arm79архитектура с глобальными переменными вызывает сомнения, если честно но все-таки, по сабжу, просто в коде обратитесь сначала к классу с первым конструктором А как я могу гарантировать, что я первый обращусь. Может там еще какая сборка подгрузится первой и она обратится ко второму конструктору (который уже должен считать). fortibransaШо за статический конструктор? Перменная пусть object и равна null и проверяй на null, а вообще шо за бред? Ну и ? проверит он, что переменная равна NULL. И потом выйдет. Проблема то в том. что статический конструктор выполняется только один раз. И больше мы туда уже не зайдем. или что - нам обращатся к классу в отдельном потоке и там вешатся в бесконечный цикл ожидания ? МСУА зачем тут статика? Мне нужно чтобы Первый класс был проинициализирован До первого его использования - статической информацией. Но информацию об инициализационных данных имеет второй класс. Первый класс без инициализации бесмысленнен. Как быть ? Писать в клиентском коде "Класс_1 вы проинициализировались ? Нет ? ну ладно я через 5 секунд зайду" что ли ?. Мне нужно чтобы к моменту работы с Классом_1 клиенстким кодом он был уже проинициализирован. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:06 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Где-то в степиИзюбр, Это как, два статических конструктора у типа? Инициализировать поля из статического конструктора - грех.. Два типа. Разные. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:07 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр, подробнее про задачу. Вы на плохую дорогу становитесь :) Может действительно DI вам нужен? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:12 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр, используй ленивую инициализацию и моск не выноси ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:12 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
netivanИзюбр, подробнее про задачу. Вы на плохую дорогу становитесь :) Может действительно DI вам нужен? DI это что-то слишком сложное. Вот так вот вбухивать в проект. Ну задачу я описал. Нужно загнать в Класс_1 глобальную информацию, имеющую смысл для всех его членов. Т.е. статическую. Без этой информации он абсолютно не работоспособен (как он подключистя к БД без строки подключения ?) Соответственно что имеем: 1. глобальную информацию (статика нужна я так понимаю) 2. не работоспособность до инициализации. В принципе тут есть что-то от ленивой инициализации. Но код не многопоточен. По идее до обращения клиентского кода статическая информация уже в ПРИНЦИПЕ должна быть. В общем нет... похоже lazy тут не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:17 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
pation, если бы еще знать что такое.... )) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:19 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр, погодите. Если у вас инициализация в Классе1 полей в конструкторе, то вам пофиг. Когда класс2 статический обратиться к Классу1(стат поля),то они будут инициализированы, а когда об этом подумает CLR.Что-то упустил? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:23 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Где-то в степиpation, если бы еще знать что такое.... )) знаю Manning Dependency Injection in NET ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:24 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
netivanИзюбр, погодите. Если у вас инициализация в Классе1 полей в конструкторе, то вам пофиг. Когда класс2 статический обратиться к Классу1(стат поля),то они будут инициализированы, а когда об этом подумает CLR.Что-то упустил? хм.. В общем извините меня . Я забыл добавить еще главное требование Оно такое: Класс_1, если его не проинициализирует никто, он должен "самопоинициализироватся". Поэтому то мне и надо, чтобы Класс_2 выполнялся раньше Класса_1. Чтобы он проинициализировал Класс_1, иначе, если Класс_1 выполнится раньше, то он посчитает, что его не инициализировали, и начнет "самоинициализацию" Извините меня. Я дейтсивтельно это упустил. Просто вот сижу ломаю голову над интереснейшей задачей с Хабра: http://habrahabr.ru/post/168591/ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:30 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
ИзюбрГде-то в степиpation, если бы еще знать что такое.... )) знаю Manning Dependency Injection in NET это аля патерн синглтон через вспомогательный тип и его статический конструктор, разруливает многоточечное обращение ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:33 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
ИзюбрПросто вот сижу ломаю голову над интереснейшей задачей с Хабра: http://habrahabr.ru/post/168591/ ЗЫ. Если что, то тут решение http://i.imgur.com/WgTJmQa.png?1 не лезте если не хотите решить все сами. И еще подсказка - в отчетах НЕ слова, а просто случайные наборы букв (соответствующие регуляркам) в стиле "ffffsdffffwww". Так, что не пытайтесь угадать английские слова. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:45 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбрне лезте если не хотите решить все сами. И еще подсказка - в отчетах НЕ слова, а просто случайные наборы букв (соответствующие регуляркам) в стиле "ffffsdffffwww". Так, что не пытайтесь угадать английские слова. госпади, сколько ошибок в паре предложений Вот, что слепая печать животворящщая делает при спешке :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 17:46 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Повторю вопрос. Подытожив. 1. Класс_1 . Работает на основе Строки_Соединения . Сохраняется для всех экземлпяров, т.е. в статической части (я так предпологаю), общую иформацию (предположим строку соединения ). 2. Класс_2 . Должен проинициализировать Класс_1 . Он должен обязательно отработатся ДО Класса_1 и проинициализировать его Строкой соединения 3. Иначе . Если Класс_1 выполнится до его инициализации Классом_2. То он видит, что его никто не инициализировал. И идет по другому алгоритму (например: при первой попытке обратится к нему из клиентского кода выдать сообщения "Ошибка. Не было инициализации") 4. К моменту вызова методов Класса_1 из клиентского кода, он должен быть готов к работе (или быть готовым сообщить о возникшей проблеме. Например об отсутствии связи с сервером, по строке которой ему передали при инициализации. И тут поймите идет речь о проблеме возникшей уже после/в_процессе инициализации, а не то, что "ой... а я еще не проинициализирован.. а вы меня вызвали... и мне нечего вам сказать") Задача. Мне нужно прогарантировать, что Класс_2 выполнится до Класса_1, и передаст ему строку соединения . Чтобы в принципе не возникло случайности, что Класс_1 выполнился до Класса_2. Иначе просто будет какой-то рендом, когда приложение то работает, то не работает, в зависимости от того, какой класс был загружен первым. PS. Класс_1 ничего не знает непосредственно о Классе_2. Он лишь должен быть кем-то проинициализирован. Однако можно ввести зависимость от еще какого-то класса - если у Вас есть идеи как это реализовать, то хотелось бы выслушать (рассмотреть, потрогать, обмозговать) ! PPS. Но хотелось бы без прикручивания технологий-мастодонтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 18:57 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр, ленивая инициализация или паттерн сингтон о чем говорил pation Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2013, 20:06 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр, слушай а если по старинке - вручную сначала инициализируешь класс1, потом все остальное. В чем проблема? Не делай это в конструкторе и все)) Main() { Class2.InitClass1(); } ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 08:36 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
ИзюбрМСУА зачем тут статика? Мне нужно чтобы Первый класс был проинициализирован До первого его использования - статической информацией. Но информацию об инициализационных данных имеет второй класс. Всё-равно я не понимаю. 1. Что-то "статическая информация"? 2. Что мешает инициализировать класс через конструктор, а не через прямую кишку? 3. При уходе от статики (статический класс, статический конструктор) ты имеешь возможность прикрутить интерфейсы (зависимости). 4. Профит? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 10:07 |
|
|
start [/forum/topic.php?fid=20&msg=38142465&tid=1405086]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 165ms |
0 / 0 |