Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Métodos de integración numérica en Visual Basic 2005 (página 6)




Enviado por jaimemontoya



Partes: 1, 2, 3, 4, 5, 6

Imports System.Text

Imports System.CodeDom.Compiler

Imports
System.Collections.Specialized

Public Class Evaluador

    Private oEnsamblado
As
System.Reflection.Assembly

    Public Function PrecompilarAssembly(ByVal Funcion As
String, _

ByVal ParametrosList As StringCollection, ByVal NameSpaceList As
StringCollection) As Boolean

        Dim mStrings As String

        Dim mParametros As String

        'Definimos un objeto de tipo StringBuilder que contendra
el código
a compilar

        Dim CodigoFuente As New StringBuilder()

        'Agregamos los Imports necesarios a nuestro codigo
fuente

        For Each mStrings In NameSpaceList

           
CodigoFuente.Append("Imports " &
mStrings & vbCr)

        Next

        'Preparamos un string con los parametros que usará
el metodo Eval

        'de de la clase
EvalClase

        For Each mStrings In ParametrosList

           
mParametros &= ", " &
mStrings

        Next

        mParametros =
Trim(mParametros)

        If mParametros.Length > 0 Then

           
mParametros = Trim(Mid(mParametros, 2))

        End If

        'Terminamos de construir la clase a compilar

       
CodigoFuente.Append("Public Class
EvalClase" & vbCr)

       
CodigoFuente.Append(" Public Shared
Function Eval(" & _

          
mParametros & ") as Object"
& vbCr)

       
CodigoFuente.Append(" Return " &
Funcion & vbCr)

   
    CodigoFuente.Append(" End Function " & vbCr)

       
CodigoFuente.Append("End Class "
& vbCr)

        'Creamos una instancia de la clase
VBCodeProvider

        'que usaremos para obtener una referencia a una interfaz
ICodeCompiler

        Dim oCProvider As New VBCodeProvider()

        Dim oCompiler As ICodeCompiler =
oCProvider.CreateCompiler

        'Usamos la clase CompilerParameters para pasar
parámetros al compilador

        'En particular, definimos que el assembly sea compilado
en memoria.

        Dim oCParam As New CompilerParameters()

       
oCParam.GenerateInMemory = True

        'Creamos un objeto CompilerResult que obtendrá los
resultados de la compilación

        Dim oCResult As
CompilerResults

        oCResult =
oCompiler.CompileAssemblyFromSource(oCParam,
CodigoFuente.ToString)

        'Comprobamos que no existan errores de
compilación.

        Dim oCError As
CompilerError

        If oCResult.Errors.Count > 0 Then

           
'Si existen errores los mostramos.

           
'Si bien, podriamos implementar un mejor
método
para visualizar

           
'los errores de compilación, este nos
servirá por los momentos.

           
For Each oCError
In oCResult.Errors

               
MsgBox(oCError.ErrorText.ToString)

           
Next

           
Return False

        Else

           
'Como el ensamblado se generó en
memoria, debemos obtener

           
'una referencia al ensamblado generado, para
esto usamos

           
'la propiedad
CompiledAssembly

           
oEnsamblado = oCResult.CompiledAssembly

 
          Return
True

        End If

    End Function

    Public Function Evaluar(ByVal
ParamArray Parametros() As Object) As Object

        If oEnsamblado Is Nothing Then

           
Return Nothing

        Else

           
'Instanciamos la clase EvalClase de nuestro
assembly

           
'creando un tipo a partir de ella.

           
Dim oClass As Type =
oEnsamblado.GetType("EvalClase")

           
'Usamos GetMethod para accesar al
método Eval, e invocamos este con los parametros
necesarios.

           
Return oClass.GetMethod("Eval").Invoke(Nothing, Parametros)

        End If

    End Function

End Class

 

 

Jaime Montoya

Santa Ana, 23 de julio de 2008

El Salvador

Partes: 1, 2, 3, 4, 5, 6
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter