6

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

2 Answers 2

2

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

Sign up to request clarification or add additional context in comments.

1 Comment

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

In Visual Studio, go to

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

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

1 Comment

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.