2010-01-18 21 views

Trả lời

3

Tôi đã nghĩ đến việc tạo một cái cho UnrealScript, nhưng tôi gặp phải các vấn đề kỳ lạ như thực tế là CodeBinaryOperatorType không bao gồm một hoạt động độc quyền. Các cây biểu thức mới trong .NET 4 có vẻ như là nhiều hơn đại diện tốt hơn về các tính năng mà CodeDom sẽ cung cấp ở cấp khối (như trong một khối các câu lệnh tạo nên một thân hàm).

Tôi nghĩ rằng chúng ta cần một CodeDom mới có các phần bên ngoài của System.CodeDom và sử dụng các bên trong của System.Linq.Expressions. Sau đó, làm cho kết quả có thể tạo ra một assembly động hoặc mã nguồn như đầu ra. (Bây giờ tôi nghĩ về nó, tạo ra một assembly được biên dịch sẽ thực sự giống như việc tạo ra một "ngôn ngữ" mới cho nguồn đầu ra.)

Edit: Trên hết, bạn cũng phải xem xét việc triển khai API CodeModel , vì rất thường CodeDom được triển khai vì ai đó đang tích hợp một ngôn ngữ mới vào Visual Studio.

+4

Trong hội nghị chuyên đề Lang.NET cuối cùng, một trong những người sáng tạo ngôn ngữ đã phàn nàn về điều gì đó tương tự và kỹ sư của Microsoft đã trả lời (chỉ một nửa nói đùa): "CodeDom có ​​thể đại diện cho bất kỳ ngôn ngữ nào miễn là C#." Ông về cơ bản thừa nhận rằng CodeDom là một thất bại và cây biểu hiện (hay đúng hơn là "Tuyên bố" Cây) là con đường phía trước. –

+1

@ JörgWMittag: Cây biểu thức có thể được sử dụng để tạo mã nguồn cho cả lớp không? –

Các vấn đề liên quan