MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Когда может пригодится пространство имен System.Reflection.Emit?"
Answer 1260010
Существующие ответы несколько устарели. В дополнение к ним следует отметить, что в .NET Core и .NET 5+ возможности System.Reflection.Emit (SRE) ограничены по сравнению с .NET Framework/Mono: генерировать динамические сборки в памяти можно, но сохранить их в исполняемый файл нельзя. Это значит, что если кто-то хотел бы использовать SRE как основу для кодогенерации в своем компиляторе, эту идею придется отбросить в условиях современного .NET. Использованию SRE для генерации сериализаторов/мапперов это не мешает, разве что теперь динамическую сборку нельзя кэшировать между разными запусками программы - ее нужно всегда генерировать заново, даже для одного и того же типа. Если нужно сохранять динамическую сборку в файл, в качестве альтернативы можно использовать Mono.Cecil или System.Reflection.Metadata.
Кроме того, в C# недавно появился новый функционал для динамической генерации кода, Source generators. В некоторых случаях, когда обычно использовался SRE/CodeDom/T4, теперь можно попробовать его.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.