Página anterior Volver al principio del trabajoPágina siguiente 

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 

Comentarios


Trabajos relacionados

  • Distribución Normal

    Distribución Normal. Función de densidad. La distribución binomial. Esta distribución es frecuentemente utilizada en l...

  • Estructura y funcionamiento del Programa Raíces

    Carlos alberto PérezEl programa esta compuesto por la función principal raices y 9 subfunciones: Raices (principal; Cuad...

  • El poder del Solver

    Ejemplo de cómo usar "SOLVER". En estos tiempos donde se habla de la tecnología, información, sociedad del conocimient...

Ver mas trabajos de Matematicas

 

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.