Hola Carlos,
 
Aunque esto no esta relacionado con la pregunta original, el tema que planteas
demuestra lo molestas que son los miembros de clase (static en C# o Shared en
VB). Una opcion alternativa al patrin singleton es el patron monostate, el cual
no tiene algunas de las limitaciones del primero.
 
Abrazo
 
Carlos Peix

  _____  

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Carlos
Alejandro PEREZ
Sent: Sábado, 01 de Diciembre de 2007 11:47 a.m.
To: [email protected]
Subject: [puntonet] evaluar funcion


Hola a todos, hola estimado Maestro
 
Hace algun tiempo quise encontrar un equivalente a la funcion ExecScript(string)
de nuestro nunca bien ponderado VisualFoxPro, donde un ExecScript("SELECT ...
FROM...") compila on-the-fly y ejecuta actualmente la sentencia como si esta
estuviese presente en ese lugar. Más aún, el runtime de Fox podía ejecutar el
comando COMPILE, para ir autogenerando bloques de codigo enteros. Esta
funcionalidad, por ejemplo, permitía compilar páginas web con scripting en
lenguaje Fox, de hecho, uno de los mecanismos de WebConnection está basado en
esta posibilidad. Otros lenguajes como Perl tambien tienen una implementacion
notablemente parecida a la de Fox.
 
En .NET parece ser que el problema está, al menos en parte, en lo fuertemente
tipado del entorno de ejecución y en el mecanismo del CLR, con lo cual
aparentemente es altamente complicado lograr esta funcionalidad en runtime. Por
ejemplo, nosotros necesitábamos cargar en un string algo asi como "Dim obj AS "+
cTipoClase y luego ejecutarlo inmediatamente, donde el tipo cTipoClase sólo se
conocía en tiempo de ejecución, porque necesitábamos generar un formulario de
clase de base con la logica para el patrón singleton a fin de heredarlo a lo
largo de toda la solución. En el algoritmo genético, algo parecido aplica, en
cada época o generación del mismo es posible que sea necesario alterar
significativamente su comportamiento, ya que por definición no bastaría sólo con
cambiar sus parámetros de funcionamiento, sino que el mismo algoritmo debe
automodificarse en cada iteración.
 
Al carecer de ejecución dinámica como lo pretendíamos, vimos que la mayor parte
de las soluciones venían del lado de crear un objeto compilador, pasarle un
string/archivo/bloque, luego enlazar el ensamblado creado y ejecutarlo. Sin
embargo, esto , aunque efectivo, no es elegante sobre todo si recordamos
aquellos lujos que tenía el zorro (permitanme ponerme un poco nostálgico).
Tuvimos que lidiar con reflexión y esas cosas, y aunque se tuvo la solución, no
nos pareció elegante. Nuestra conclusion fue que efectivamente era necesario
recurrir a los trucos expuestos, al menos hasta que eventualmente se coloque
este proceso en un espacio de nombres en algun release futuro de .NET, aunque si
examinamos como está diseñado el CLR, creería que va a costar algo, pero son
solo conjeturas de este momento.
 
En java está la posibilidad de lograr evaluacion dinamica de expresiones a
través de un compilador on-memory y no necesariamente uno externo, el cual
genera bytecodes on-the-fly al recibir un string, aunque exige que el
programador conozca los internals de estos objetos para poder luego utilizarlos.
De todos modos, algunos ejemplos tirados por el Maestro podrían considerarse
como algo parecido a compiladores en-proceso de todos modos, y en este caso el
parecido (y las limitaciones) entre ambos mundos quedan muy evidenciados.
 
Cordiales saludos,
 
Carlos A. Pérez


  _____  

De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Angel "Java"
Lopez
Enviado el: Saturday, December 01, 2007 10:21
Para: [email protected]
Asunto: [puntonet] evaluar funcion


Hola gente!
 
Hace poco creo hubo una pregunta parecida, no se si envie estos enlaces, donde
esta tambien el mencionado por Alan, (jeje.... ya va siendo tiempo de publicar
AjBasic con un ejemplo de este tipo):
 
(seria interesante tambien plantear el tema de algoritmo genetico en una
grid.... pero eso es otro tema.... ver algo en
http://msmvps.com/blogs/lopez/archive/2007/11/15/programando-para-una-grid.aspx
http://msmvps.com/blogs/lopez/archive/2007/11/21/m-225-s-programando-para-una-gr
id.aspx
)
 
Build a Custom .NET "EVAL" Provider
http://www.eggheadcafe.com/articles/20030908.asp
 
http://www.codeproject.com/csharp/runtime_eval.asp
http://www.codeproject.com/csharp/csi.asp
 
Runtime Compilation (A .NET eval statement)
http://www.codeproject.com/dotnet/evaluator.asp
 
An Eval Function for C# using JScript.NET (JavaScript) 
http://www.odetocode.com/Code/80.aspx

Evaluate C# Code (Eval Function)
http://www.codeproject.com/csharp/evalcscode.asp

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 Runtime
http://www.codeproject.com/cs/algorithms/matheval.asp

A Simple Compiler for the Common Language Runtime
http://www.codeproject.com/cs/algorithms/compiler.asp

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com/
 

----- Original Message ----- 
From: Alan Lavintman <mailto:[EMAIL PROTECTED]>  
To: [email protected] 
Sent: Saturday, December 01, 2007 6:22 AM
Subject: [puntonet] evaluar funcion

Fijate si esto te puede servir...

http://www.odetocode.com/Code/80.aspx

Tuve que usarlo tiempo atras y me dio resultado...

SAludos.


Dario Quintana <[EMAIL PROTECTED]> wrote: 

Perdon si la pregunta sonó fea... no es con mala intención, me dí cuenta despues
que escribí, mejor me voy a dormir...

Saludos y segun nos comentes un poco más...podremos ayudarte.


On Dec 1, 2007 2:14 AM, Dario Quintana < [EMAIL PROTECTED]> wrote:


Alguien tiene idea de que ? No quedó muy claro que estás necesitando.




-- 
Dario Quintana
http://darioquintana.com.ar  <http://darioquintana.com.ar> 




  _____  

Be a better sports nut! Let your teams follow you with Yahoo Mobile. Try
<http://us.rd.yahoo.com/evt=51731/*http://mobile.yahoo.com/sports;_ylt=At9_qDKvt
AbMuh1G1SQtBI7ntAcJ> it now.



__________ Información de NOD32, revisión 2124 (20070317) __________

Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com


__________ Información de NOD32, revisión 2697 (20071202) __________

Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com


Responder a