2010-03-29 25 views
12

¿Alguien puede recomendar un generador de código C# simple. Yo simplemente buscando algo con métodos como:generador de código C#

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

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

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

........... etc

y después de la creación de todas las clases \ métodos y otros miembros que llamamos la función de generación de código (donde puede especificar algunos parámetros)

¿Existe un generador de código de código abierto?

+0

Esto es algo escrito recientemente y es también en Nuget: https://www.nuget.org/packages/CsCodeGenerator/. . . . . . . . . Es de código abierto y se puede encontrar en github: https://github.com/borisdj/CsCodeGenerator – borisdj

Respuesta

12
+0

CodeDOM es demasiado pesado y difícil de estudiar.Estoy buscando algo más fácil y ligero – Neir0

+3

@ Neir0: Es casi tan fácil como puede ser, estoy desconcertado en cuanto a lo que estás buscando si lo llamas demasiado difícil. –

+2

Si desea el tipo de sintaxis ligeramente más ligera que su pregunta plantea, le sugiero que escriba algunos métodos de extensión muy simples sobre el CodeDOM sin formato. Es muy fácil crear una buena API fluida usando esta técnica. – GarethJ

0

Si desea poder generar una clase dada alguna cadena de arbitraje que contiene código C#, necesita un compilador C#. Por el momento, el framework .Net no incluye un compilador en el que pueda pasar fragmentos de C# y recuperar el código compilado. Si tiene necesidades más específicas, debe especificar exactamente lo que desea hacer.

+0

@Gabe: ¿por qué no hay un compilador dentro del marco? Eche un vistazo a: http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider.aspx – Oliver

+0

Estoy escribiendo una herramienta que me ayuda a automatizar tareas típicas de todos los días. – Neir0

+0

@Oliver Creo que el compilador no forma parte del framework. es un programa externo (csc.exe) en lugar del compilador C# en mono por ejemplo. – Neir0

6

T4 or Text Template Transformation Toolkit podría ser vale la pena analizar.

Otra opción es crear su propio generador simple, que contiene una funcionalidad más adecuada para su situación que el CodeDOM. En un reciente proyecto de generación de código, eso es lo que hice, sin embargo, he encapsulado la generación de código para permitir la posterior transición a CodeDOM.

6

Es posible que desee echar un vistazo csscript que se basa en CodeDOM.

Se le permite escribir cosas como:

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

Asegúrese de leer el documento, es bastante detallada y usted encontrará que usted puede hacer mucho más de lo que acaba de copiar antes.

+1

Gracias. Pero esta herramienta no ayuda a generar código – Neir0

0

Como explícitamente está buscando un generador de código de código abierto sugiero MyGeneration. Otro enfoque basado en plantillas (que no es lo que está buscando ya que quiere la sintaxis "GenClass.Add ...." en lugar de plantillas) sería Codesmith Tools, es realmente potente pero de código cerrado.

Cuestiones relacionadas