Reflection C#

using System;
using System.Reflection;
class MainClass {
    public static void ShowTypes(string name, Assembly assembly) {
        Type[] typeArray = assembly.GetTypes();
        Console.WriteLine(name);
        foreach (Type type in typeArray) {
            if (type.IsClass) {
                Console.WriteLine("\nNamespace : {0}", type.Namespace);
                Console.WriteLine("Class : {0}", type.FullName);
                if (type.BaseType != null)
                    Console.WriteLine("Base Class : {0}",
                      type.BaseType.FullName);
                else
                    Console.WriteLine("Class not derived from anything");
                if (type.IsAbstract)
                    Console.WriteLine("Abstract base class");
                else
                    Console.WriteLine("Instantiable class");
                if (type.IsPublic)
                    Console.WriteLine("Scope: Public");
                else
                    Console.WriteLine("Scope: Private");
            } else if (type.IsInterface) {
                    Console.WriteLine("\nNamespace : {0}", type.Namespace);
                    Console.WriteLine("Interface : {0}", type.FullName);
                    if (type.IsPublic)
                        Console.WriteLine("Scope: Public");
                    else
                        Console.WriteLine("Scope: Private");
                } else
                    if (type.IsEnum) {
                        Console.WriteLine("\nEnumeration: {0}", type.FullName);
                    } else
                        Console.WriteLine("\nType: {0}", type.FullName);
        }
    }
    public static void Main(string[] args) {
        for (int i = 0; i < args.Length; ++i) {
            Assembly assembly = Assembly.LoadFrom(args[0]);
            ShowTypes(args[0], assembly);
        }
    }
}