【问题标题】:Programmatically Format Generated CodeDom Code以编程方式格式化生成的 CodeDom 代码
【发布时间】:2010-11-23 19:17:00
【问题描述】:

如何确保从如下代码生成的 CS 格式正确,即好像我们按下了 CTRL+K+D?它是 C#

我们正在做一些事情:

CodeMemberMethod membMethod = new CodeMemberMethod();
membMethod.Attributes = MemberAttributes.Static | MemberAttributes.Public;
membMethod.ReturnType = new CodeTypeReference("IEnumerable<" + TableNameAsSinglular + ">");
membMethod.Name = "Get" + TableName;
membMethod.Statements.Add(new CodeSnippetStatement(DataBaseContext + " dcontext = new " + DataBaseContext + "(ConnectionString);"));
membMethod.Statements.Add(new CodeSnippetStatement("var records = from record in dcontext." + TableName + " select new " + TableNameAsSinglular + "{"));
    int iCount = 0;

    //Add columns fields
    foreach (DataRow dr in sqlTable.Rows)
    {
        if (iCount == 4)
        break;
        string strColName = dr["ColumnName"].ToString().Replace(" ", "");
        membMethod.Statements.Add(new CodeSnippetStatement(strColName + "=" + "record." + strColName + ","));
        iCount++;
    }

membMethod.Statements.Add(new CodeSnippetStatement("};"));

【问题讨论】:

    标签: c# code-generation codedom


    【解决方案1】:

    CodeDom 真正用于运行时代码生成。如果您希望在设计时或编译时生成代码,您应该使用 T4 模板。

    T4 允许您完全按照您希望的方式格式化代码输出:

    http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx

    【讨论】:

    • 啊好吧,这很有趣。我们(也许是!)使用 codeGenerator.GenerateCodeFromNamespace(cnsCodeDom, sw, cgo);写入文件。
    【解决方案2】:

    在 Visual Studio 中,转到

    工具->操作-文本编辑器->C#->格式化

    Ctrl-K-D 将使用那里的设置来格式化代码。

    【讨论】:

    • 感谢您的回复,我已更新问题以反映我想以编程方式实现此目标,理想情况下,我们正在编写 CodeDom 代码。即是否有类似 CodeDom.FormatNicely
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2023-01-20
    • 1970-01-01
    相关资源
    最近更新 更多