2009-08-28 16 views
5

¿Cómo puedo hacer que el CS genera a partir de un código como se formatea el siguiente muy bien, es decir, como si presionamos CTRL +K + D ? Es C#programación formato generado Código CodeDom

Estamos haciendo algo en la línea de:

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

Respuesta

2

CodeDom es realmente para la generación de código de tiempo de ejecución. Si está buscando generar código en tiempo de diseño o tiempo de compilación, debe usar plantillas T4.

T4 permite dar formato a la salida código exactamente cómo desea que aparezca:

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

+0

ah ok, eso es interesante. Somos (tal vez lo fueron) usando codeGenerator.GenerateCodeFromNamespace (cnsCodeDom, sw, cgo); para escribir en el archivo. –

0

en Visual Studio, vaya a

Herramienta -> Opetions-Text Editor-> C# -> Formatear

Ctrl - K - D usará la configuración para formatear el código.

+0

Gracias por su respuesta, he actualizado la pregunta para reflejar que quiero lograr esto mediante programación, idealmente en el Al mismo tiempo, estamos escribiendo el código CodeDom. Es decir, hay algo así como CodeDom.FormatNicely –

Cuestiones relacionadas