2009-08-28 7 views
5

Jak mogę upewnić się, że CS generowana z kodu jak poniżej jest sformatowana ładnie, tj jakbyśmy wciśnięty CTRL + K + D? Jest C#Programowe Format wygenerowany kod CodeDom

Robimy coś wzdłuż linii:

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

Odpowiedz

2

CodeDom jest tak naprawdę do generowania kodu runtime. Jeśli chcesz wygenerować kod w czasie projektowania lub kompilacji, powinieneś użyć szablonów T4.

T4 pozwala formatować wyjście kodu dokładnie tak, jak chcesz go do stawienia się:

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

+0

ah ok, to interesujące. Jesteśmy (być może byli!) Używając codeGenerator.GenerateCodeFromNamespace (cnsCodeDom, sw, cgo); napisać do pliku. –

0

w Visual Studio, przejdź do

Tool -> Opetions-Text redaktora> C# -> Formatowanie

Ctrl - K - D użyje tam ustawień do sformatowania kodu.

+0

Dzięki za odpowiedź, mam zaktualizowany pytanie do refleksji, że chcę, aby to osiągnąć programowo, najlepiej na w tym samym czasie piszemy kod CodeDom. Czy jest coś takiego jak CodeDom.FormatNicely –

Powiązane problemy