微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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并不像你想象的那么有用;它不理解“上下文”[例如,周围的范围和声明]给程序赋予它们的意义).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐