private AssemblyType GetAssemblyType(AssemblyNamespace assemblyNamespace, Type type)
        {
            AssemblyType assemblyType = new AssemblyType();

            assemblyNamespace.AssTypes.Add(assemblyType);
            assemblyType.AssType = type.Name;
            return(assemblyType);
        }
        public AssemblyResult Run(string filename)
        {
            assembly = Assembly.LoadFrom(filename);
            AssemblyResult assemblyResult = new AssemblyResult();

            assemblyResult.AssemblyName = assembly.FullName;

            Type[] types;
            types = assembly.GetTypes();
            foreach (Type type in types)
            {
                AssemblyNamespace assemblyNamespace = GetAssemblyNamespace(assemblyResult, type);
                if (assemblyNamespace != null)
                {
                    AssemblyType assemblyType = GetAssemblyType(assemblyNamespace, type);
                    FillInformationInAssemblyType(assembly, assemblyType, type);
                }
            }
            SortAssemblyResult(assemblyResult);
            return(assemblyResult);
        }
 private void FillInformationInAssemblyType(Assembly assembly, AssemblyType assemblyType, Type type)
 {
     foreach (MethodInfo methodInfo in GetExtensionMethods(assembly, type))
     {
         string methodName = "$Extended$ " + methodInfo.Name;
         methodName += "(";
         bool haveParameters = false;
         foreach (ParameterInfo parameter in methodInfo.GetParameters())
         {
             haveParameters = true;
             methodName    += parameter.ParameterType.Name + " " + parameter.Name + ", ";
         }
         if (haveParameters)
         {
             methodName = methodName.Substring(0, methodName.Length - 2);
         }
         methodName += ")";
         AssemblyMethod assemblyMethod = new AssemblyMethod();
         assemblyMethod.Name = methodName;
         assemblyType.AssMethods.Add(assemblyMethod);
     }
     foreach (MethodInfo methodInfo in type.GetMethods())
     {
         string methodName = methodInfo.Name;
         methodName += "(";
         bool haveParameters = false;
         foreach (ParameterInfo parameter in methodInfo.GetParameters())
         {
             haveParameters = true;
             methodName    += parameter.ParameterType.Name + " " + parameter.Name + ", ";
         }
         if (haveParameters)
         {
             methodName = methodName.Substring(0, methodName.Length - 2);
         }
         methodName += ")";
         AssemblyMethod assemblyMethod = new AssemblyMethod();
         assemblyMethod.Name = methodName;
         assemblyType.AssMethods.Add(assemblyMethod);
     }
     assemblyType.AssMethods.Sort(delegate(AssemblyMethod x, AssemblyMethod y)
     {
         return(x.Name.CompareTo(y.Name));
     });
     foreach (FieldInfo fieldInfo in type.GetFields())
     {
         AssemblyField assemblyField = new AssemblyField();
         assemblyField.Name = fieldInfo.FieldType.Name + " " + fieldInfo.Name;
         assemblyType.AssFields.Add(assemblyField);
     }
     assemblyType.AssFields.Sort(delegate(AssemblyField x, AssemblyField y)
     {
         return(x.Name.CompareTo(y.Name));
     });
     foreach (PropertyInfo propertyInfo in type.GetProperties())
     {
         AssemblyProperty assemblyProperty = new AssemblyProperty();
         assemblyProperty.Name = propertyInfo.PropertyType.Name + " " + propertyInfo.Name;
         assemblyType.AssProperties.Add(assemblyProperty);
     }
     assemblyType.AssProperties.Sort(delegate(AssemblyProperty x, AssemblyProperty y)
     {
         return(x.Name.CompareTo(y.Name));
     });
 }