2010-11-19 41 views
5

Khuôn khổ .NET mới (> 2.0) có cung cấp bất kỳ cải tiến nào cho việc tạo mã không?Tạo mã C# trong .NET 4

Tôi đã sử dụng CodeDom trong phiên bản 2.0 và tôi tự hỏi liệu việc tạo mã có thể đơn giản hơn hay không.

Trả lời

2

Tùy thuộc vào những gì bạn muốn thực hiện.

Bạn đã đề cập đến việc sử dụng CodeDom để tạo mã- nếu bạn muốn tạo phương thức bay, bạn có thể sử dụng biểu thức LINQ (tôi không thể nghĩ ra một hướng dẫn thực sự tốt trên đầu của tôi)).

Biểu thức LINQ có lợi ích khi viết dễ dàng hơn (theo kinh nghiệm của tôi), nhanh hơn để tạo (đặc biệt khi bạn viết toàn bộ lớp để đóng gói một phương thức) và rất nhanh để thực thi.

Sau đây là một đoạn VB.Net của một biểu thức LINQ mà tạo ra một chức năng mà mất trong một điều khiển ASP.Net và trả về (bảo vệ) ViewState giá trị tài sản của mình:

'generate a delegate that can access the protected control property "ViewState" 
'(by using LINQ expressions, we can avoid the performance hit of reflection) 
    Dim cntrlParam As ParameterExpression = Expression.Parameter(GetType(Control), "cntrl") 
    Dim vsPropertyAcessor As MemberExpression = Expression.Property(cntrlParam, "ViewState") 
    dim viewStateAccessor as Func(of Control, StateBag) = Expression.Lambda(vsPropertyAcessor, cntrlParam).Compile() 

Sau đó chúng ta có thể gọi hàm được tạo ra như vậy:

viewStateAccessor (myCntrl)("my_vs_key") 

Nếu bạn muốn tạo mã tĩnh, hãy kiểm tra tính năng text template của VS.

+0

Thêm vào đó, trong .NET4 bao gồm hỗ trợ biểu thức LINQ khác, ví dụ: vòng và khối. –

+0

Và tôi nghĩ rằng các biểu thức chỉ tạo ra một hàm mới, không có một assembly mới. Vì vậy, bạn tha phí trên tải một hội đồng bổ sung. – CodesInChaos