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.
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">"hola mundo!"</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.