2010-03-29 36 views
12

Ai đó có thể giới thiệu một trình tạo mã C# đơn giản. Tôi chỉ tìm kiếm một cái gì đó với các phương pháp như:Trình tạo mã C#

GenClass = CreateNewClass(AccessModifier,Name......) 

GenClass.Add(new Method(AccessModifier,RetType,Name....){[email protected]"....."} 

GenClass.Add(new Property(AccessModifier,Type, Name....) 

........... vv

và sau khi tạo mọi tầng lớp \ phương pháp và các thành viên khác mà chúng tôi gọi hàm Code Generation (nơi chúng tôi có thể cụ thể một số thông số)

Có trình tạo mã nguồn mở như vậy không?

+0

Đây là điều mà thời gian gần đây bằng văn bản và nó cũng trong NuGet: https://www.nuget.org/packages/CsCodeGenerator/. . . . . . . . . Đó là mã nguồn mở và có thể được tìm thấy trên github: https://github.com/borisdj/CsCodeGenerator – borisdj

Trả lời

12
+0

CodeDOM quá nặng và khó học.Tôi đang tìm kiếm một cái gì đó dễ dàng hơn và ánh sáng – Neir0

+3

@ Neir0: Đó là về dễ dàng như nó được, tôi đang bối rối như những gì bạn đang tìm kiếm nếu bạn gọi đây là một quá khó khăn. –

+2

Nếu bạn muốn loại cú pháp hơi nhẹ hơn mà câu hỏi của bạn đặt ra, tôi khuyên bạn nên viết một số phương pháp mở rộng rất đơn giản trên đầu trang của CodeDOM thô. Nó rất dễ dàng để tạo ra một API thông thạo tốt đẹp bằng cách sử dụng kỹ thuật này. – GarethJ

0

Nếu bạn muốn có thể tạo một lớp cho một số chuỗi phân xử có chứa mã C#, bạn cần trình biên dịch C#. Tại thời điểm này .Net framework không gửi kèm với một trình biên dịch mà bạn có thể chuyển các đoạn mã của C# tới và lấy lại mã đã biên dịch. Nếu bạn có nhu cầu cụ thể hơn, bạn nên xác định chính xác những gì bạn đang muốn làm.

+0

@Gabe: tại sao không có trình biên dịch trong khung công tác? Hãy xem: http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider.aspx – Oliver

+0

Tôi đang viết công cụ giúp tôi tự động hoá các tác vụ điển hình mỗi ngày. – Neir0

+0

@Oliver Tôi nghĩ rằng trình biên dịch không phải là một phần của khung công tác. đó là chương trình bên ngoài (csc.exe) thay vì trình biên dịch C# trong mono chẳng hạn. – Neir0

6

T4 or Text Template Transformation Toolkit có thể là giá trị xem xét.

Một tùy chọn khác là tạo trình tạo đơn giản của riêng bạn, trong đó có chức năng phù hợp hơn với trường hợp của bạn hơn CodeDOM. Trong một dự án tạo mã gần đây là những gì tôi đã làm, tuy nhiên tôi đã gói gọn việc tạo mã để làm cho nó có thể chuyển đổi sang CodeDOM sau này.

6

Bạn có thể muốn xem csscript dựa trên CodeDOM.

Nó cho phép bạn viết những thứ như:

var PrintSum = CSScript.LoadMethod(
     @"public static void PrintSum(int a, int b) 
      { 
       Console.WriteLine((a+b)); 
      }") 
      .GetStaticMethod(); 
PrintSum(1, 2); 

Hãy chắc chắn để đọc các tài liệu, nó khá chi tiết và bạn sẽ tìm thấy bạn có thể làm nhiều hơn những gì tôi chỉ cần sao chép trước đó.

+1

Cảm ơn. Nhưng công cụ này không giúp tạo mã – Neir0

0

Vì bạn tìm kiếm một trình tạo mã nguồn mở một cách rõ ràng, tôi đề xuất MyGeneration. Một cách tiếp cận dựa trên mẫu khác (đó không phải là những gì bạn đang tìm kiếm vì cú pháp "GenClass.Add ...." chứ không phải là mẫu) sẽ là Codesmith Tools nó thực sự mạnh mẽ nhưng là nguồn đóng.