/// <summary> /// Reads types from module /// </summary> /// <param name="module"></param> /// <param name="types"></param> private void ReadTypes(Module module, TypeDefinitionCollection types) { // first add all types, because i will need find depend types foreach (TypeDefinition typeDefinition in types) { if (typeDefinition.Name != "<Module>") { var type = new Type() { FullName = FormatTypeName(typeDefinition), Name = FormatTypeName(typeDefinition) }; // try find namespace var nsName = GetNamespaceName(typeDefinition); var ns = (from n in module.Namespaces where n.Name == nsName select n).SingleOrDefault(); if (ns == null) { ns = new Namespace() { Name = nsName, Module = module }; module.Namespaces.Add(ns); } type.Namespace = ns; ns.Types.Add(type); } } foreach (TypeDefinition typeDefinition in types) { if (typeDefinition.Name != "<Module>") { var type = (from n in module.Namespaces from t in n.Types where (t.Name == FormatTypeName(typeDefinition)) select t).SingleOrDefault(); if (typeDefinition.HasFields) ReadFields(type, typeDefinition.Fields); /*if (typeDefinition.HasEvents) ReadEvents(type, typeDefinition.Events);*/ if (typeDefinition.HasMethods) ReadMethods(type, typeDefinition.Methods); if (typeDefinition.HasConstructors) ReadConstructors(type, typeDefinition.Constructors); } } }
/// <summary> /// Reads main module from assembly /// </summary> /// <param name="moduleDefinition"></param> private void ReadModule(ModuleDefinition moduleDefinition) { this.MainModule = new Module() { Name = moduleDefinition.Name }; ReadTypes(MainModule, moduleDefinition.Types); }