c# – XML序列化Roslyn SyntaxTree?

我正在寻找将C#转换为 XML并再次反序列化回C#的选项.有人知道任何现有的解决方案吗?我假设Roslyn SyntaxTree不是Xml可序列化的.我还假设为一个Syntaxtree制作一个xml-serializer是一项相当大的工作.但也许不是吗?

我为什么需要这个?我想通过xsl到Syntaxtree-xml从xml模型生成代码,然后生成c#(或者可能是vb).

我不想直接从XSL生成C#(可以做但我觉得它不是理想的).我需要XSL,因为我还要从XML模型生成XAML和HTML,我也希望能够生成任何需要的代码等等.

我知道T4模板,但现在我正在寻找其他选项,原因有很多.

解决方法

Roslyn是一个开放的编译器.我假设您可以直接插入自己的代码来遍历AST并以XML格式转储它.鉴于它是开放的,因此你可以实现自己的扩展来读取你的转储XML,并构建一个Roslyn AST(我认为它可以被精心打印).这似乎很多工作.

对于固定解决方案,请参阅C# AST in XML.该解决方案也需要类似的读取XML-to-make-AST.

您可能不希望将XML用于树;这样的文件通常是巨大的.见What would an AST (abstract syntax tree) for an object-oriented programming language look like?.

您可能更好地在解析和构建AST的工具的上下文中操作,直接在这些AST上进行操作,然后对结果进行相同的打印.我们的DMS系统既有解析(前面两个例子所示),也有许多语言的漂亮打印,包括已经内置的C#,以及许多有用的API,用于检查/修改/生成它构建的AST代码. (对于分析AST而言,XSL并不像你想象的那么有用;它不理解“上下文”[例如,周围的范围和声明]给程序赋予它们的意义).

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...