Hola gente!
Hace unos días, un "thread" de la excelente lista de .NET del Microsoft Users Group de Argentina:
Ejecutar codigo desde variable
me recordó un tema de mi "backlog" para AjGenesis, mi proyecto de generación de código. Y ayer, el bueno de Juan Pablo García, me envió por "email" el enlace a
Evaluate C# Code (Eval Function)http://www.codeproject.com/csharp/evalcscode.asp
Es lo que quiero agregar al AjGenesis (y quizas en alguna parte de SaasyLongTail, el proyecto en el que participo en SW): que un template pueda ser escrito en C# o VB.NET, de la siguiente forma: genero un texto
using...
class MyTemplate {
public void Evaluate(AjGenesisContext context) {
... y aquí generar el código del template
}
<h1>Prueba</h1><h2>${Project.Name}</h2><# for (int k=1; k<=6; k++) {#><h2>Mensaje <#= k #></h2><# }#>
y así.... Como veran, es el viejo truco de JSP y ASP.NET: compilar el template. La idea me la sembró justamente JavaServer Pages, alguna vez.
En la solución planteada en el enlace de Juan Pablo, habra que ver como descargar esa DLL luego.
Bueno otros enlaces similares:
An Eval Function for C# using JScript.NET (JavaScript) http://www.odetocode.com/Code/80.aspx
How To Programmatically Compile Code Using C# Compilerhttp://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q304/6/55.asp&NoWebContent=1
The expression evaluator revisited (Eval function in 100% managed .net)http://www.codeproject.com/useritems/eval3.asp
Evaluating Mathematical Expressions by Compiling C# Code at Runtimehttp://www.codeproject.com/cs/algorithms/matheval.asp
http://www.codeproject.com/useritems/eval3.asp http://www.codeproject.com/csharp/runtime_eval.asp http://www.codeproject.com/csharp/csi.asp
Otro camino es implementar su propio lenguaje:
A Simple Compiler for the Common Language Runtimehttp://www.codeproject.com/cs/algorithms/compiler.asp
Vean como usa la SharpIDE, encantador... :-).... ya va a caer esa IDE en algun AjGenesis.ToolsContrib... :-)
Discusion interesante en:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=141666&SiteID=1 http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=524490&SiteID=1
Otro camino es scripting:
http://weblogs.asp.net/rosherove/articles/dotnetscripting.aspxhttp://www.codeproject.com/csharp/scripting.asphttp://www.codeproject.com/dotnet/DotNetScript.asphttp://www.alintex.com/products.aspx
La gente de Java tiene, por ejemplo:
http://www.singularsys.com/jep/
Algunos enlaces que colecciono:
http://www.ajlopez.net/Busqueda.php?Filtro=Interpre
Nos leemos!
Angel "Java" Lopez http://www.ajlopez.com/
Published Mon, Oct 2 2006 8:56 by lopez