System.CodeDOM
- это система генерации кода, которая была разработана для целевых языковых функций, которые являются общими для многих языков .NET, в частности C # и VB.NET. Он не был разработан для поддержки специальностей любого языка .NET.
Даже если вам разрешено помещать операторы в качестве сущностей верхнего уровня в IronPython или IronRuby, вы не можете делать это в C # или VB.NET, и, следовательно, это не поддерживается System.CodeDOM.
Обратите внимание, что разработка System.CodeDOM
также практически прекратилась после .NET 2.0. Следовательно, эта модель кода не поддерживает также более поздние синтаксические возможности C # или VB.NET, такие как выражения-синтаксис, лямбда-выражения или async / await. По моему впечатлению, System.CodeDOM
был изначально изобретен, чтобы сделать возможными такие вещи, как конструктор WinForms. В таких приложениях не очень важно охватывать все языковые функции всех языков, а нужно только охватывать общие черты, чтобы можно было генерировать один и тот же код на нескольких языках одновременно. Поскольку все языки .NET должны поддерживать CLI, общие черты также включают в себя такие вещи, как события, которые несколько специфичны (например, Java их не знает).
Редактировать: И поэтому не ожидайте, что System.CodeDOM
охватывает все языковые функции всех языков, ожидайте, что он будет поддерживать только достаточно всех языков для генерации кода для него.