views:

255

answers:

3

How can I make sure the CS generated from code like the following is formatted nicely, i.e as if we pressed CTRL-K D? It is C#

We are doing something along the lines of:

        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("};"));
A: 

In Visual Studio, go to

Tool -> Opetions-Text Editor->C#-> Formatting

Ctrl-K-D will use the settings there to format the code.

David Basarab
Thanks for your reply, I have updated the question to reflect that I want to achieve this programmatically, Ideally at the same time we are writing the CodeDom code. I.e is there something like CodeDom.FormatNicely
Phill Duffy
+1  A: 

CodeDom is really for runtime code generation. If you are looking to generate code at design time or compile time, you should use T4 templates.

T4 lets you format the code output exactly how you want it to appear:

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

free-dom
ah ok, that's interesting. We are (maybe were!) using codeGenerator.GenerateCodeFromNamespace(cnsCodeDom, sw, cgo); to write out to the file.
Phill Duffy