以编程方式格式化生成的CodeDom代码

时间:2009-08-28 16:30:46

标签: c# code-generation codedom

如何确保从以下代码生成的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("};"));

2 个答案:

答案 0 :(得分:2)

CodeDom实际上是用于运行时代码生成的。如果您希望在设计时或编译时生成代码,则应使用T4模板。

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

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

答案 1 :(得分:0)

在Visual Studio中,转到

工具 - &gt;操作 - 文本编辑器 - &gt; C# - &gt;格式化

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