如何从 CodeStatementCollection 生成代码?

How to generate code from a CodeStatementCollection?

A class 我正在重用填充序列化中使用的 CodeStatementCollection。

我想将此 CodeStatementCollection 转换为人类可读的代码。

这可能吗?

您可以使用 GenerateCodeFromStatement() from CSharpCodeProvider 将单个 CodeStatement 转换为 C# 代码。要从 CodeStatementCollection 生成 C# 代码,您只需在循环中调用它:

static string GenerateCode(CodeStatementCollection statements)
{
    var writer = new StringWriter();

    var compiler = new CSharpCodeProvider();

    foreach (CodeStatement statement in statements)
    {
        compiler.GenerateCodeFromStatement(statement, writer, null);
    }

    return writer.ToString();
}