Inicio > .NET, C#, LINQ, VB.NET > Reflector, todo lo que siempre quisiste

Reflector, todo lo que siempre quisiste

Así es en algún lugar de la web me encontré con esta pequeña aplicación, que es muy poderosa, en este pequeño articulo descubriremos que es reflector y para que nos sirve.

primero entendamos lo que hace, o cómo funciona el CLR, antes debe quedar entendido que cuando nosotros presionamos F6 (construimos la solución de nuestra aplicación), lo que creamos es un *.exe o un *.dll, que en si es un código MSIL (Microsoft Intermediate Language), pero como sabemos este es el código que resulta de cada uno de los compiladores del lenguaje de .NET, (csc para C#, por ejemplo), lo que hace el CLR es compilar de nuevo este resultado, y ahí si es en donde es llevado a lenguaje máquina.

Aquí es a lo que harry le llama programación mezclada, un por raro el nombre, pero a lo que se refiere el buen amigo José David, es que es la parte en donde se desarrolla la magia de  .NET que nos permite programar algunos módulos en VB.NET y hacer uso de ellos en una aplicación de C#, de verdad, si no me creen, aquí un ejemplo y luego el uso de Reflector.

Primero creamos un proyecto de VB.NET que sea de tipo librería de clases, que llamaremos Películas (que será una demo de LINQ, todo esto con Visual Studio 2008).

Luego ya en el código, lo primero es importar los nombres de espacio que nos permite trabajar con LINQ y con Listas:

Imports System.Linq
Imports System.Collections.Generic

luego escribimos una clase llamada pelicula con las siguientes propiedades:

Public Class pelicula
        Public Titulo As String
        Public Genero As String
        Public Duracio As Double
        Public Musica As String
    End Class

después de esto agregamos un método que se llama PeliculasTerror, que recibe una variable de tipo string llamada genero, en la que agregamos a una lista de llamada ListaTerror tres películas dos de terror y una para niños, además realizamos una consulta (con ayuda de LINQ), en donde la filtramos por genero, luego mandamos a pantalla el resultado, el código sería el siguiente:

Public Sub PeliculasTerror(ByVal genero As String)
        Dim ListaTerror As New List(Of pelicula)
        Dim peli1 As New pelicula()
        peli1.Titulo = “Alvin y las Ardillas”
        peli1.Genero = “Comedia/Familiar”
        peli1.Duracio = 93
        peli1.Musica = “Cristopher Lennertz”
        ListaTerror.Add(peli1)

        Dim peli2 As New pelicula
        peli2.Titulo = “Gritos de la oscuridad”
        peli2.Genero = “Horror/Thriller”
        peli2.Duracio = 84
        peli2.Musica = “Shirley Walker”
        ListaTerror.Add(peli2)

        Dim peli3 As New pelicula
        peli3.Titulo = “El arte del Pánico”
        peli3.Genero = “Horror/Thriller”
        peli3.Duracio = 98
        peli3.Musica = “Tomandandy”
        ListaTerror.Add(peli3)

Dim peliculaTerro = From terror In ListaTerror Where terror.Genero Like genero Select terror

Console.WriteLine(“Las peliculas del genero {0} son: “, genero)
        For Each terror In peliculaTerro
            Console.WriteLine(“{0}”, terror.Titulo)

        Next

    End Sub

Por último generamos y ya que no hay errores, terminamos con esta parte, ahora para mostrar que realmente es verdad lo que les digo, creamos un proyecto de tipo consola con C# y agregamos la referencia de  Peliculas.dll, que acabamos de crear y creamos una instancia de la referencia y pedimos que el usuario introduzca el género, el código seria como este:

static void Main(string[] args)
        {
            Peliculas.Peliculas peliculaTerror = new Peliculas.Peliculas();
            Console.WriteLine(“Introduce genero: “);
            string genero = Console.ReadLine();
            peliculaTerror.PeliculasTerror(genero);
            Console.ReadLine();
        }

ejecutamos y el resultado seria este:

clip_image002[4]

Como se pueden dar cuenta si es posible, ahora veamos cómo es que funciona Reflector, pero entes de eso veamos, que es. MSIL y como se ve, para ello lo encontramos en la ruta: C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin, aquí lo encontramos abrimos la dll de películas que hicimos en VB.NET que se muestro mas o menos así:

clip_image003[4]

 

 

 

 

 

 

Si damos doble clic en alguno de los métodos o clases, nos muestra el ya famoso código MSIL, por ejemplo demos doble clic en el de PeliculasTerror y veamos que se nos muestra algo así:

clip_image004[4]

Como se pueden dar cuenta este código no es muy entendible pero si = que el que hicimos con C#, para que vean hagan lo mismo, abran de nuevo otro MSIL y abran la aplicación de C#, y den doble clic en void Main, observen que es del mismo tipo:

clip_image005[4]

Insisto aun así no es muy entendible el código así que es aquí en donde entra esta herramienta tan genial, que es Reflector, para eso primero la descargamos de aquí: http://www.aisto.com/roeder/dotnet/Download.aspx?File=Reflector,

Ahora que hace esta herramienta,lo que hace es desensamblar el código MSIL y llevarlo a código .NET, de nuevo no me creen?, mta, pues chequemos el ejemplo jeje.

Veamos, primero al abrir Reflector nos muestra la opción de elegir entre la versión del Framework que queremos usar (ya soporta la ultima versión 3.5 y claro LINQ, por eso la demo si funciona jeje). nos muestra esta opción:

                   clip_image006[4]

Y para que vean que si funciona y muy bien, abrimos la .dll de películas que hicimos en VB.NET en Visual Studio 2008 y este es el resultado:

clip_image007[4]

En la figura se observa claramente las variables que declaramos en esta clase, y además el constructor que .NET nos genera por Default, ven que si es muy interesante esta Herramienta, podemos hacer todo esto con nuestros proyectos, y además podemos elegir el lenguaje en el que nos lo desensambla a .NET. Los lenguajes soportados actualmente son: C#, Visual Basic, Delphi, MC++, Chrome, y el mismo IL. Y también da la posibilidad de elegir la versión de .Net Framework sobre la cual va a mostrar las librerías del mismo .Net Framework. La navegación entre clases también es bastante buena.

No esperen más seguro cuando la comiencen a usar, formara parte de sus herramientas de cabecera.

Saludos desde Toluca de parte de su amigo Norberto, y Feliz año nuevo

Categorías:.NET, C#, LINQ, VB.NET
  1. diciembre 30, 2007 a las 3:01 am

    Hola !! Pues que shida herramienta, además de que linq me llama mucho la atención =). Está genial !! Vaya que cada vez las cosas se pueden realizar de una manera más sencilla, el tiempo que uno se ahorra uff. Nos vemos !!

  2. Fernando
    octubre 21, 2008 a las 5:15 pm

    Por favor si alguien me ayuda tengo una dll pienso que fue echa en vb 6.0 y necesito habrirla para reparar o realizar cambios ,
    de ante mando agradesco al mundo y al rey Mundo

  3. nuevaorden
    marzo 6, 2010 a las 12:23 pm

    Ok, el rpoblema viene cuando el codigo está ofuscado !!! como lo hacen????

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: