System.CodeDom Namespace

| | Comentarios (1)

No se si muchos conocen las maravillas del namespace del .NET System.CodeDom...

La verdad, después de haberlo usado intensivamente en un par de proyectos, puedo decir que como no tengas cuidado es un infierno... y si lo tienes... pues como que también... pero no me mal interpretéis... en el próximo proyecto seré yo quien pida usarlo otra vez.

Si alguien no conoce el namespace, pues, es el susodicho sirve para genera código fuente. Es decir... yo llamo a unas funciones, y voy creando los fuentes de clases, métodos, variables... vamos... lo que se hacía toda la vida concatenando cadenas, y que al final nadie se enteraba de lo que pasaba.

La principal ventaja de este namespace, es que el código que generas de está forma, es multilenguaje... es decir... una vez que hago las llamadas a las funciones pertinentes, puedo generar las clases en Visual Basic o en C# sin modificar una sola línea de código.

Y otra ventaja que también me gusta mucho... es que con él puedo generar código automáticamente en mis controles... por ejemplo... pongámonos en el hipotético caso de un control, al que siempre que se usa, hay que pasarle el nombre del control padre... aunque ya se que a priori que ese va a ser this.Page

Pues bueno, con System.CodeDom se puede generar automáticamente ese código que siempre hay que escribir, y lo mejor de todo... se generará VisualBasic en un proyecto VisualBasic, Csharp en uno Csharp... o si usas otro lenguaje se generará ese otro lenguaje...

Pero bueno... a hasta ahora, lo que me fastidiaba era que cuando quería generar un fichero completo de Visual Basic (asease cuando generaba una compileUnit en VB.NET), el código generado siempre era "Option Strict Off" y "Option Explicit Off" aunque yo dijese lo contrario en el proyecto.

Pues bueno... aunque no está documentado, prácticamente en ningún sitio, con estas simples líneas, se puede generar código "Option Strict On" y "Option Explicit Off"

compileUnit.UserData.Add("AllowLateBound", false);                      // Option Strict On
compileUnit.UserData.Add("RequireVariableDeclaration", true);           // Option Explicit On
compileUnit.UserData.Add("GenerateImports", true);                      // Crea Imports NameSpace...

Por ahora ya queda presentado... otro día ya publicaré un pequeño control que use System.CodeDom.

Categorías

1 Commentarios

Diego dijo:

Cuando se prodra cer algun desarrollo con esto, tengo mucha curiosidad, debido a que empece con la concatenación de string y es un lío. gracias desde ya Ramirez Diego_Analista Programador de Sistemas Argentina

Escribir un comentario

Sobre esta entrada

Esta página contiene una sola entrada realizada por Víctor y publicada el 29 de Mayo 2005 2:11 AM.

Reflector es la entrada anterior en este blog.

Prevenir antes que curar es la entrada siguiente en este blog.

Encontrará los contenidos recientes en la página principal. Consulte los archivos para ver todos los contenidos.

Publicidad