And*_*ita 5 c# code-generation xml-serialization roslyn
我正在寻找将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(我认为可以很好地打印)。这看起来工作量很大。
有关固定解决方案,请参阅XML 中的 C# AST。该解决方案也需要类似的 read-XML-to-make-AST。
您可能不想将 XML 用于树;此类文件通常非常巨大。请参阅面向对象编程语言的 AST(抽象语法树)是什么样子?。
对您来说,最好在解析和构建 AST 的工具上下文中进行操作,直接对这些 AST 进行操作,然后漂亮地打印结果。我们的 DMS 系统具有针对许多语言(包括已内置的 C#)的解析(如前两个示例所示)和漂亮打印,以及许多有用的 API,用于从它构建的 AST 中检查/修改/生成代码。(XSL 对于分析 AST 的用处比您想象的要小得多;它不理解赋予程序其含义的“上下文”[例如,周围的范围和声明])。