2009-08-28 18 views
5

Wie kann ich sicherstellen, dass die CS aus dem Code erzeugt wie die folgende schön formatiert ist, das heißt, als ob wir CTRL +K gedrückt + D? Es ist C#Programmatically Format generiert CodeDom-Code

Wir etwas entlang der Linien von tun:

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

Antwort

2

CodeDom ist wirklich für die Generierung von Laufzeitcode. Wenn Sie Code zur Entwurfszeit oder zur Kompilierzeit generieren möchten, sollten Sie T4-Vorlagen verwenden.

T4 können Sie die Code-Ausgabe genau zu formatieren, wie Sie es angezeigt werden soll:

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

+0

ah ok, das ist interessant. Wir sind (vielleicht waren!) Mit codeGenerator.GenerateCodeFromNamespace (cnsCodeDom, sw, cgo); in die Datei schreiben. –

0

in Visual Studio gehen zu

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

Ctrl - K - D verwendet die Einstellungen zum Formatieren des Codes.

+0

Vielen Dank für Ihre Antwort, ich die Frage aktualisiert, um widerzuspiegeln, dass ich diese programmatisch erreichen wollen, ideal gelegen an der Gleichzeitig schreiben wir den CodeDom-Code. IE.E gibt es so etwas wie CodeDom.FormatNicely –

Verwandte Themen