Здравствуйте, alexkro, Вы писали:
IT>>Обработка исключений — какая проблема? По спецификации Dispose не должен выбрасывать никаких исключений.
A>Мне интересно посмотреть на эту спецификацию. MSDN говорит, что может выбросить. Собственно, мне тоже хотелось бы, чтобы не выбрасывал, но пока все, что я встречал говорит об обратном.
Ну может насчёт спецификации я и загнул, но что-то на эту тему Рихтер поучал и в Роторе есть полный текст того, что про это думает MS.
Если нам не помогут, то мы тоже никого не пощадим.
M>>Ты имеешь ввиду маппинг, генерируемый в compile-time? А разве Reflection + Reflection.Emit не решает то же самое проще и надёжнее?
VD>А ты пробовал? Ну, тогда попробуй.
ОК. Ты пробовал я вижу.
Сравни, пожалуйста маппинг, который ты генерировал в compile-time с маппингом, который ты генерировал на Reflection.Emit.
VD>Поймешь насколько это "проще". И насколько "надежнее" получается. К тому, же сама генерация отнимает время. А так все в компайл-тайме.
Rsdn.Framework.Data критикуешь? Странное место ты для этого выбрал
M>>Опять же, есть поля, которые нужно освобождать, а есть ссылки на всяких там Parent.
IT>Я же говорю, в особо клинических случаях никто не запрещает писать реализацию в ручну.
Это нормальный случай, не клинический.
IT>>> Обработка исключений — какая проблема? По спецификации Dispose не должен выбрасывать никаких исключений.
M>>Ой, ну это уж точно вряд ли. Ты, наверное с Finalize перепутал.
IT>Не перепутал.
Ну ты невнимательно читаешь. В тексте не жёсткий запрет и даже явно говорится, что некоторые исключения возможны. Кроме того, это совсем не спецификация.
M>>Как ты думаешь, если я перед завершением using FileStream дискетку из дисковода вытащу. Будет исключение
IT>Попробуй сам и посмотри что будет. В чём проблема.
Какая проблема?
M>>Для Dispose скорее 40%. И вообще, это будет тот же ужастный стиль C. Чтобы написать просто и кратко нужно будет из мозгов котлету сделать.
IT>Такое ощущение, что ты только Dispose и программируешь. Я что-то не замечал, чтобы эта задача так часто возникала. Бывает иногда, бывает даже, что нужно освобождать несколько объектов. Но если в них самих Dispose написан корректно, то особой проблемы с порядком освобождения не возникает.
Вот именно! Согласен на все сто.
Программирование Dispose задача редкая, но нужно её делать внимательно. Именно поэтому это лучше сделать аккуратно руками, чем полагаться на догадки компилятора.
Если бы компилятор мог однозначно сам определиться, то понятно. Но он не может. Поэтому на скользких участках лучше сойти с автопилота и брать управление на себя. А спать будем на магистрали.
M>>Ты имеешь ввиду маппинг, генерируемый в compile-time? А разве Reflection + Reflection.Emit не решает то же самое проще и надёжнее?
IT>Решает, но не проще.
Не проще для кого? Для конечного пользователя вроде намного проще.
Здравствуйте, mihailik, Вы писали:
M>ОК. Ты пробовал я вижу.
Именно.
M>Сравни, пожалуйста маппинг, который ты генерировал в compile-time с маппингом, который ты генерировал на Reflection.Emit.
Генерация на Emit так и не закончилась. Задолбался угадывать, что за ошибку я допустил. А генерация кода никаких проблем не вызывает.
VD>>Поймешь насколько это "проще". И насколько "надежнее" получается. К тому, же сама генерация отнимает время. А так все в компайл-тайме.
M>Rsdn.Framework.Data критикуешь? Странное место ты для этого выбрал
Каким боком тут Data? Там вся сериализация на рефлекшоне и без генерации кода вообще.
... << RSDN@Home 1.1.2 beta 3 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
M>>Сравни, пожалуйста маппинг, который ты генерировал в compile-time с маппингом, который ты генерировал на Reflection.Emit.
VD>Генерация на Emit так и не закончилась. Задолбался угадывать, что за ошибку я допустил. А генерация кода никаких проблем не вызывает.
Emit успешно используется многими людьми. Проблема, очевидно, в тебе а не в Emit'е
Здравствуйте, VladD2, Вы писали:
IT>>Там генерации выше крыши.
VD>Тыкни пальзем... где?
Генерацией заменены самые медленные вещи рефлекшина — Activator.CreateInstance и SetValue/GetValue полей и свойств. Ну и специальная фича последней версии полностью построенная на генерации — абстрактные классы
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, VladD2, Вы писали:
IT>>>Там генерации выше крыши.
VD>>Тыкни пальзем... где?
IT>Генерацией заменены самые медленные вещи рефлекшина — Activator.CreateInstance
Думаю, на счет Activator.CreateInstance ты можешь ошибаться. По крайней мере CreateInstance массивов работает со скоростью звука.
IT> и SetValue/GetValue полей и свойств. Ну и специальная фича последней версии полностью построенная на генерации — абстрактные классы
M>>Emit успешно используется многими людьми. Проблема, очевидно, в тебе а не в Emit'е
VD>Ну, то что я ламер, это понятно. Не ясно что же остальные то при комунизмен не живут? Или у вас там уже к тому близко?
А ты не путаешь электрификацию всей страны с истинным коммунизмом?
Лично я делал на Emit'е обработчики WM-сообщений. Типа того, что ты там в форуме WinForms советовал на Hashtable.
Правда, код выслать не могу, потерялся при поломке винта. Там, правда, работы было на пятнадцать копеек. Если будешь подкалывать я его заново наваляю
Здравствуйте, mihailik, Вы писали:
M>Правда, код выслать не могу, потерялся при поломке винта. Там, правда, работы было на пятнадцать копеек. Если будешь подкалывать я его заново наваляю
Подкалывать не буду. Он никому ненужен.
... << RSDN@Home 1.1.2 beta 3 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, mihailik, Вы писали:
M>Лично я делал на Emit'е обработчики WM-сообщений. Типа того, что ты там в форуме WinForms советовал на Hashtable.
Да братец, это та самая premature optimization, которой пугают маленьких детей. Обработка гуевых сообщений это последнее что нужно оптимайзить, особенно супротив хештаблицы.
Вобще Влад прав, генерация сразу в IL-код крайне немасштабируема в плане развития. В свое время нам пришлось отказаться от генерации проксей через Emit, потому что добавление новых фич съедало огромное количество времени.
AVK>Да братец, это та самая premature optimization, которой пугают маленьких детей. Обработка гуевых сообщений это последнее что нужно оптимайзить, особенно супротив хештаблицы.
Согласен на 100%. Это был сугубо исследовательский проект.
AVK>Вобще Влад прав, генерация сразу в IL-код крайне немасштабируема в плане развития. В свое время нам пришлось отказаться от генерации проксей через Emit, потому что добавление новых фич съедало огромное количество времени.
Я понимаю так. Emit однозначно нужен там, где производительность может дать хорошую отдачу. Слово же "масштабирование" в этом контексте очень туманно.
Здравствуйте, AndrewVK, Вы писали:
Ш>>Попробуйте, в качестве упражнения, сделать хороший текстовый редактирующий элемент, такого же класса или лучше, как в студии. Если я правильно понял, Янус использует Scintillе-у? А что, свой было влом сделать?
AVK>Зачем?
Зачем в принципе-то понятно. А вот делать редактор лучше чем в студии "в качестве упражнения" это ж каким маньяком надо быть?