|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#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 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
МСУВсё-равно я не понимаю. 1. Что-то "статическая информация"? 2. Что мешает инициализировать класс через конструктор, а не через прямую кишку? 3. При уходе от статики (статический класс, статический конструктор) ты имеешь возможность прикрутить интерфейсы (зависимости). 4. Профит? 1. Ну банально - это информация нужная Классу_1 для работы. Предположим это КонекшнСтринг. Если ему его не дадут, то как он Сессию откроет ? 2. Хм. А как я могу проинициализировать через конструктор, и обеспечить, что я это сделаю до обращений от клиентского кода ? Я вижу единственный вариант: статический конструктор. Он выполнится гарантированно до любых обращений пользовательского кода (пользовательскому коду будет не доступен статический конструктор). 3. Да все клево. Но как бы сделать так, чтобы я успел проинициализировать класс до обращений из польщовательского кода ? 4. Два миллиона зеленых мертвых президентов меня устроит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 12:22 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
В общем. Спасибо товарищи Земляне ! Я подумал. Действительно, самое лучшее будет, пожалуй, через ленивое обращение к статическому инициализируемому свойству. Все отлично укладывается. Класс_2 статически инициализирует Класс_1. При вызове методов Класса_2 из клиентского кода, идет проверка по типу Синглтона, мол если инстанс инициализирован (то бишь, если нужные для работы данные были заданы), то все ОК. Если же не инициализирован, то значит статическую переменную не инициализировали - и, как мне и нужно, идем по второму алгоритму. Надо будет еще позаботится о правах доступа, но это у меня уже есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 12:22 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр1. Ну банально - это информация нужная Классу_1 для работы. Предположим это КонекшнСтринг. Если ему его не дадут, то как он Сессию откроет ? Если классу что-то нужно для работы, используют конструктор этого класса. Изюбр2. Хм. А как я могу проинициализировать через конструктор, и обеспечить, что я это сделаю до обращений от клиентского кода ? Я вижу единственный вариант: статический конструктор. Он выполнится гарантированно до любых обращений пользовательского кода (пользовательскому коду будет не доступен статический конструктор). Какая-то каша... Проинициализировать через конструктор что ты не сможешь? Причем тут статический конструктор я так и не понял. Обычный констрктор что, не гарантированно выполнится что-ли? Изюбр3. Да все клево. Но как бы сделать так, чтобы я успел проинициализировать класс до обращений из польщовательского кода ? Инициализируйся при первом обращении. Или при старте программы. Или еще как. Какое это имеет отношение к архитектуре самих классов с конструкторами, непонятно. Изюбр4. Два миллиона зеленых мертвых президентов меня устроит :) С такой архитектурой, боюсь, можно рассчитывать максимум на десяток деревянных гривен ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 12:50 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
МСУ, Инициализирует не клиентский код. А другая библиотека. Причем клиентский код об этой внешней библиотеке не знает. Причем и сам Класс_1 не знает о Классе_2. У Класса_1 есть переменная, которую кто-то должен проинициализировать извне. Класс_1 вообще не знает кто там вызовет его конструктор и передаст ему КонекшнСтринг. Т.е. о Классе_2 он вообще в принципе ничего не знает, Класс_1 это просто класс из библиотеки. Откуда ему знать имя конкретного класса, который даст ему Строку в конструктор. Опять же. Клиентский код тоже не знает о Классе_2. Потому, что я хочу Клиентский Код отделить от всей кучи технических деталей, которые тянет с собой Класс_2 и Класс_1 (внутри себя). Слишком уж это завяжет Клиентский Код на сущности, которые ему не нужны в работе. Я хочу отцепить Клиентский Код от всех этих не нужных ему сущностей. И поэтому хочу, чтобы Клиентский Код получил уже работоспособный (инициализированный) Класс_1. Который для него кто-то должен проинициализировать. Соответственно мне нужно придумать, как обеспечить, чтобы Клиентский Код получил уже проинициализированный Класс_1. Проинициализировать его может Класс_2. Который знает где добыть конфигурационные параметры. Классу_1 это безразлично. Ему лишь нужна Строка. Да я в прицнипе там планирую позаботится о правах доступа, чтобы никто, кроме Класса_2 не смог влезть - но это в принципе я уже придумал как сделать. Ну и итог. Мне нужно обеспечить, чтобы Класс_1 был проинициализирован Строкой, до любого обращения к нему от Клиентского Кода. В целом я вижу единственную возможность - это инициализация Класса_1 в его статическом конструкторе (который будет доступен только избранным - т.е. Классу_2). И (большое спасибо pation за наводку) я думаю, идея с ленивым доступом к методам Класса_1 прекрасное решение. Т.е. Класс_2 статически проинициализирует Класс_1. Клиентский Код не будет иметь доступ к Статическому конструктору, а значит будет работать с Классом_1 уже после того, как тот должен быть проинициализирован. Соответственно Клиентский Код вызовет любой метод, который, в свою очередь, будет обращаться к внутреннему свойству через get. Там я делаю проверку, что нужные данные проинициализированы, и в ином случае выдам ошибку. как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 13:17 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр, авторВ целом я вижу единственную возможность - это инициализация Класса_1 в его статическом конструкторе (который будет доступен только избранным - т.е. Классу_2). если я не ошибаюсь конструктор типа может выполниться при загрузке приложения... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:11 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
netivanИзюбр, если я не ошибаюсь конструктор типа может выполниться при загрузке приложения... Ох печаль... Тогда похоже придется думать о DI :( Чтобы Клиентский Код запрашивал Класс_1 у некоторой точки доступа, а точка доступа возвращала Класс_1, проинициализированный Классом_2 (надо будет еще обучить эту точку тому, что Класс_2 умеет инициализировать Класс_1) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:38 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
ИзюбрМСУ, Инициализирует не клиентский код. А другая библиотека. Причем клиентский код об этой внешней библиотеке не знает. Причем и сам Класс_1 не знает о Классе_2. У Класса_1 есть переменная, которую кто-то должен проинициализировать извне. Класс_1 вообще не знает кто там вызовет его конструктор и передаст ему КонекшнСтринг. Т.е. о Классе_2 он вообще в принципе ничего не знает, Класс_1 это просто класс из библиотеки. Откуда ему знать имя конкретного класса, который даст ему Строку в конструктор. Опять же. Клиентский код тоже не знает о Классе_2. Потому, что я хочу Клиентский Код отделить от всей кучи технических деталей, которые тянет с собой Класс_2 и Класс_1 (внутри себя). Слишком уж это завяжет Клиентский Код на сущности, которые ему не нужны в работе. Я хочу отцепить Клиентский Код от всех этих не нужных ему сущностей. И поэтому хочу, чтобы Клиентский Код получил уже работоспособный (инициализированный) Класс_1. Который для него кто-то должен проинициализировать. Соответственно мне нужно придумать, как обеспечить, чтобы Клиентский Код получил уже проинициализированный Класс_1. Проинициализировать его может Класс_2. Который знает где добыть конфигурационные параметры. Классу_1 это безразлично. Ему лишь нужна Строка. Да я в прицнипе там планирую позаботится о правах доступа, чтобы никто, кроме Класса_2 не смог влезть - но это в принципе я уже придумал как сделать. Ну и итог. Мне нужно обеспечить, чтобы Класс_1 был проинициализирован Строкой, до любого обращения к нему от Клиентского Кода. В целом я вижу единственную возможность - это инициализация Класса_1 в его статическом конструкторе (который будет доступен только избранным - т.е. Классу_2). И (большое спасибо pation за наводку) я думаю, идея с ленивым доступом к методам Класса_1 прекрасное решение. Т.е. Класс_2 статически проинициализирует Класс_1. Клиентский Код не будет иметь доступ к Статическому конструктору, а значит будет работать с Классом_1 уже после того, как тот должен быть проинициализирован. Соответственно Клиентский Код вызовет любой метод, который, в свою очередь, будет обращаться к внутреннему свойству через get. Там я делаю проверку, что нужные данные проинициализированы, и в ином случае выдам ошибку. как то так.Какая-то странная архитектура. Клиентский код не знает ни про библиотеку, ни про Класс_2. А кто о них знает, кто в итоге обратится к библиотеке, или к Классу_2? Класс_1? Тогда из-за чего весь сыр-бор? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:39 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Изюбр, реализуйте фабрику, что будет создавать для клиентского кода экземпляр Класса_1 и внутри себя знать о чём ей надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:40 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
skyANAИзюбр, реализуйте фабрику, что будет создавать для клиентского кода экземпляр Класса_1 и внутри себя знать о чём ей надо. Хм... А действительно. Фабрика и будет делать то, что я предпологал возложить на CLR. Т.е. при первом запросе - она увидит, что Класс_1 не инициализирован, и вызовет Класс_2 для инициализациия... В общем я правильно понял, что нужна общая точка доступа :) Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:44 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
skyANAКакая-то странная архитектура. Клиентский код не знает ни про библиотеку, ни про Класс_2. А кто о них знает, кто в итоге обратится к библиотеке, или к Классу_2? Класс_1? Тогда из-за чего весь сыр-бор? Интерфейсы. Попытка все реализовать через интерфейсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:45 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
ИзюбрskyANAКакая-то странная архитектура. Клиентский код не знает ни про библиотеку, ни про Класс_2. А кто о них знает, кто в итоге обратится к библиотеке, или к Классу_2? Класс_1? Тогда из-за чего весь сыр-бор? Интерфейсы. Попытка все реализовать через интерфейсы.Ну дык: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:48 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
ИзюбрnetivanИзюбр, подробнее про задачу. Вы на плохую дорогу становитесь :) Может действительно DI вам нужен? DI это что-то слишком сложное. Вот так вот вбухивать в проект. Ну задачу я описал. Нужно загнать в Класс_1 глобальную информацию, имеющую смысл для всех его членов. Т.е. статическую. Без этой информации он абсолютно не работоспособен (как он подключистя к БД без строки подключения ?) Соответственно что имеем: 1. глобальную информацию (статика нужна я так понимаю) 2. не работоспособность до инициализации. В принципе тут есть что-то от ленивой инициализации. Но код не многопоточен. По идее до обращения клиентского кода статическая информация уже в ПРИНЦИПЕ должна быть. В общем нет... похоже lazy тут не подходит. Естественно, лучше подобные мины закладывать на ровном месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 14:52 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
netivanесли я не ошибаюсь конструктор типа может выполниться при загрузке приложения... ЗЫ. Можно поигратся с флагом BeforeFieldInit, чтобы отключить случайный вызов. Но пожалуй Фабрика - это отличный вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2013, 15:02 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Подскажите. Если реализовать методы и параметры через обобщенные типы так. Будет нормально ? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Нужно ли в методах WorkMethod делать какие-либо проверки ? Как посоветуете улучшить код еще ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 16:24 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Не хватает: Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 18:02 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
skyANAНе хватает: Код: c# 1. 2. 3. 4. 5. 6. 7.
ок добавлю :) А так как - сойдет ? Али чего поправить/исправить ? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 18:51 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Так же мне все тут рекомендовали сделать ? А то может чего по лучше можно.... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 18:53 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Так как код ? В частности вот это: Код: c# 1. 2. 3. 4. 5.
Или все классы правильней завязать на базовый класс ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 11:29 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
Молчание ) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2013, 11:27 |
|
Как обеспечить порядок выполнения двух статических конструкторов
|
|||
---|---|---|---|
#18+
ИзюбрМолчание ) Народ потихоньку переваривает информацию и тихо прифигевает Мне, например, до сих пор не совсем понятна архитектура решения... Хотя подозреваю, что речь может идти об а-ля плагинах... Ну или о каком-то виде "интерфейсов" для взаимодействия с Вашей библиотекой (программой/сервисом и т.д.), которая реализует стандартный набор функциональности и доступна сторонним вызовам... В таком случае у Вас, естественно будет описание работы с Вашим функционалом в котором, как минимум, можно указать, что перед первым боевым вызовом функций Вашего функционала, в обязательном порядке необходимо вызвать функцию такую-то, иначе будет произведена дефолтная инициализация и амбец...(дальше, как говорится, сам дурак, тебя мол, предупреждали). Либо действительно пойти по пути использования синглтон фабрики, через которую будут дёргаться методы Вашего объекта, либо фабрика будет сама создавать экземпляр объекта, инициализировать его и отдавать клиентскому коду... Архитектуру бы и задачу(не та что в сабже) распишите в общих чертах, а там подсобим... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2013, 20:08 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1405086]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
others: | 455ms |
total: | 663ms |
0 / 0 |