rss resume / curriculum vitae linkedin linkedin gitlab github twitter mastodon instagram
MonoUML, Ingenierí­a Inversa, Cuarta Parte
Apr 10, 2005

Casi todo listo para terminar la librerí­a, he limpiado el cí³digo ahora esta mí¡s legible, mí¡s rí¡pido y con mayor soporte: clases anidadas, enumeraciones, arreglos, elementos pasados por referencia y punteros, y lo que habí­a dicho antes, un parí¡metro para "nivelar" la profundidad de la importacií³n, ahora por defecto se hace la importacií³n AssemblyImport, es decir íºnicamente se hace ingenierí­a inversa a los ensamblados importados y no a sus dependencias, algo que por lo general es lo que se busca, y ademí¡s esta el clí¡sico FullImport, donde se busca hasta el nivel mí¡s bajo de informacií³n, por ejemplo si un mí©todo utiliza un System.Int32 (o un int en pocas palabras), tambií©n se la hace ingenierí­a inversa al System.Int32 a pesar de que es parte de la librerí­a base, y así­, todo recursivamente. Ademí¡s de eso ya no hay problemas de Duplicated Key al cargarlo en MonoUML, en pocas palabras todo va genial.

Reverse Engineering

El cí³digo correspondiente es el siguiente:

using System;

namespace NamespaceSample { public interface MyInterface { string HelloWorld (); }

    <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>enum</b></font> MyEnumeration
    {
            Some,
            Thing,
            Here
    }

    <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>abstract</b></font> <font color="#2e8b57"><b>class</b></font> MyAbstractClass
    {
            <font color="#2e8b57"><b>public</b></font> MyAbstractClass (MyEnumeration em)
            {
            }
    }

    <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>class</b></font> MyClass : MyAbstractClass, MyInterface
    {
            <font color="#2e8b57"><b>public</b></font> MyClass (MyEnumeration enm) : <font color="#a52a2a"><b>base</b></font> (enm)
            {
            }

            <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>string</b></font> HelloWorld ()
            {
                    <font color="#a52a2a"><b>return</b></font> <font color="#ff00ff">&quot;hola mundo!&quot;</font>;
            }

            <font color="#2e8b57"><b>public</b></font> <font color="#2e8b57"><b>void</b></font> ByReference (<font color="#a52a2a"><b>ref</b></font> <font color="#2e8b57"><b>int</b></font> i)
            {
            }

            <font color="#2e8b57"><b>protected</b></font> <font color="#2e8b57"><b>class</b></font> InternalClass
            {
                    <font color="#2e8b57"><b>public</b></font> InternalClass (MyClass parentClass)
                    {
                    }

                    <font color="#2e8b57"><b>private</b></font> <font color="#2e8b57"><b>void</b></font> InternalHelloWorld ()
                    {
                    }

                    <font color="#2e8b57"><b>private</b></font> <font color="#2e8b57"><b>string</b></font> _myString;
                    <font color="#2e8b57"><b>private</b></font> <font color="#2e8b57"><b>int</b></font>[] _myArray;
            }
    }

}

Espero acepten mi propuesta, tengo mucho que platicar :)

Actualizacií³n: Correcií³n de errores en imagí©n, CVS refleja los cambios.


Back to posts