При обновлении или при выходе из текущей страницы ngOnDestroy
вызываться не будет. Приложение будет просто уничтожено браузером.
Только когда Angular2 удаляет компонент из DOM из-за того, что вы уходите или вызываете destroy()
для динамически созданного компонента, вызывается ngOnDestroy()
.
Вы можете прослушать beforeunload
и unload
самостоятельно, если вам нужно выполнить какое-либо действие, прежде чем приложение будет уничтожено браузером.
См. Также
Андерс Хейлсберг сказал:
Это одно из направлений, которое мы ищем для будущих версий С #. На самом деле, я рассматриваю метапрограммирование как часть нашего более крупного «Компилятора. как услугу », над которой мы работаем для будущего выпуска. Мы хотите открыть наш компилятор, чтобы он стал API, к которому вы можете обращаться скомпилировать фрагмент кода и получить обратно деревья выражений и / или IL. это позволяет использовать целый ряд сценариев, таких как приложение программируемость, интерактивная подсказка, рефакторинг, написанный пользователем, и доменные языки, в которые встроены маленькие островки C #
Источник
Он также сказал в другом месте (в интервью Channel9 ), что они переносили ядро компилятора C # на управляемый код, чтобы сделать это возможным.
Существует
1135572] демо этого доступно с последнего PDC. Компилятор C # действительно является управляемым кодом.
Это действительно зависит от множества разных вещей. Включая, но не ограничиваясь ...
Теперь что касается ответов на эти вопросы, у меня есть без понятия. Я также не верю, что существует определенный ответ на основной вопрос №1. Итак, общий ответ - большой «Не знаю»
Серьезно. Нет. Это было бы кошмаром поддержки для Microsoft. Компиляторы "начальной загрузки", то есть компиляторы, которые компилируют язык, на котором они написаны, существуют (и широко распространены) по крайней мере с 70-х годов. Это не имеет ничего общего с тем, чтобы позволить клиенту изменять исходную кодировку, однако проблема заключается в возможности поддержки. Так что на данный момент надстройки VS-IDE как можно ближе к вам.
Если я правильно понимаю ваш вопрос, то я думаю, что ответ частично положительный: создание компилятора C # на C # (или на самом деле в .NET) упростит обнаружение ловушек в процесс компиляции, который пользователи смогут использовать внутри самого языка.
В качестве примера языка .NET с компилятором .NET см. Boo . Поскольку компилятор Boo написан на .NET (в основном на C # и немного Boo, если быть точным), очень легко подключиться к процессу компиляции с помощью таких вещей, как макросы компиляции и метапрограммирование.
Я полагаю, что когда компилятор C # сам будет написан на C #, метапрограммирование на C # станет намного проще и неизбежно. Однако я сомневаюсь, что Microsoft сделает весь компилятор «изменяемым пользователем», поскольку как указано в других ответах, это будет означать кошмар поддержки. Однако существуют другие компиляторы C # с открытым исходным кодом , которые могут быть более либеральными в своем подходе.
Да, версия компилятора C # будет «официальной версией Microsoft C #», и с ее помощью вы можете создать свой «собственный язык C #». Затем вы можете создать компилятор, написанный на вашем «собственном языке C #» для компиляции самого себя или других программ