2010-03-29 11 views
12

Qualcuno può consigliare un semplice generatore di codice C#. Ho solo guardando qualcosa con metodi come:C# code generator

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

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

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

........... ecc

e dopo aver creato tutte le classi \ i metodi e gli altri membri che noi chiamiamo la funzione di generazione di codice (dove siamo può specificare alcuni parametri)

Esiste un generatore di codice opensource?

+0

Questa è una cosa da poco scritto ed è anche in NuGet: https://www.nuget.org/packages/CsCodeGenerator/. . . . . . . . . È open source e può essere trovato su github: https://github.com/borisdj/CsCodeGenerator – borisdj

risposta

12
+0

CodeDOM è troppo pesante e difficile da studiare.Sto cercando qualcosa di più facile e leggero – Neir0

+3

@ Neir0: È facile come si arriva, sono sconcertato per quello che stai cercando se si chiama questo troppo difficile. –

+2

Se vuoi il tipo di sintassi leggermente più leggera che la tua domanda propone, ti suggerirei di scrivere alcuni metodi di estensione molto semplici in cima al CodeDOM non elaborato. È molto facile creare una buona API fluente con questa tecnica. – GarethJ

0

Se si desidera essere in grado di generare una classe data una stringa arbitray contenente codice C#, è necessario un compilatore C#. Al momento il framework .Net non viene fornito con un compilatore per poter passare snippet di C# e ottenere il codice compilato. Se hai esigenze più specifiche, devi specificare esattamente cosa stai cercando di fare.

+0

@Gabe: perché non c'è un compilatore all'interno del framework? Date un'occhiata a: http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider.aspx – Oliver

+0

Sto scrivendo uno strumento che mi aiuta ad automatizzare le attività tipiche di tutti i giorni. – Neir0

+0

@Oliver Penso che il compilatore non faccia parte del framework. ad esempio è il programma esterno (csc.exe) invece il compilatore C# in mono. – Neir0

6

T4 or Text Template Transformation Toolkit potrebbe essere merita di essere esaminata.

Un'altra opzione è creare il proprio generatore semplice, che contiene funzionalità più adatte alla situazione rispetto al CodeDOM. In un recente progetto di generazione di codice è quello che ho fatto, tuttavia ho incapsulato la generazione del codice per rendere possibile la successiva transizione a CodeDOM.

6

Si consiglia di dare un'occhiata a csscript che si basa su CodeDOM.

Esso consente di scrivere le cose come:

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

Assicurarsi di leggere il doc, è abbastanza dettagliata e troverete che si può fare molto di più di quello che ho appena copiato prima.

+1

Grazie. Ma questo strumento non aiuta a generare codice – Neir0

0

Poiché si cerca esplicitamente un generatore di codice opensource, suggerisco MyGeneration. Un altro approccio basato su template (che non è quello che stai cercando da quando vuoi la sintassi "GenClass.Add ...." piuttosto che i modelli) sarebbe Codesmith Tools è davvero potente ma chiuso.