2009-08-28 11 views
5

Làm thế nào tôi có thể chắc chắn rằng CS tạo ra từ mã như sau được định dạng độc đáo, tức là như nếu chúng ta ép CTRL +K + D? Nó là C#lập trình Format tạo CodeDOM Mã

Chúng tôi đang làm một cái gì đó dọc theo dòng:

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

Trả lời

2

CodeDom thực sự là để tạo mã thời gian chạy. Nếu bạn đang tìm kiếm để tạo mã tại thời gian thiết kế hoặc thời gian biên dịch, bạn nên sử dụng các mẫu T4.

T4 cho phép bạn định dạng đầu ra mã chính xác làm thế nào bạn muốn nó xuất hiện:

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

+0

ah ok, đó là thú vị. Chúng tôi (có thể!) Bằng cách sử dụng codeGenerator.GenerateCodeFromNamespace (cnsCodeDom, sw, cgo); để ghi ra tệp. –

0

Trong Visual Studio, đi đến

Tool -> Opetions-Text tổng biên tập> C# -> Định dạng

Ctrl - K - D sẽ sử dụng cài đặt ở đó để định dạng mã.

+0

Cảm ơn trả lời của bạn, tôi đã cập nhật các câu hỏi để phản ánh mà tôi muốn đạt được điều này lập trình, Lý tưởng nhất là tại đồng thời chúng tôi đang viết mã CodeDom. I.E là có một cái gì đó giống như CodeDom.FormatNicely –