Exemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Reflection metadata explorer demo.");
            Console.Write("Force load referenced assemblies? (y/n) ");

            var answer = (char)Console.Read();

            if (char.ToUpper(answer) == 'Y')
            {
                int loaded = 0, failed = 0;
                foreach (AssemblyName referencedAssembly in Assembly.GetExecutingAssembly().GetReferencedAssemblies())
                {
                    try
                    {
                        Assembly.Load(referencedAssembly);
                        loaded++;
                    }
                    catch
                    {
                        failed++;
                    }
                }

                Console.WriteLine("Loaded assemblies: {0}. Failed to load: {1}.", loaded, failed);
            }

            CompositeMenuCommand command = AppDomain.CurrentDomain.GetAssemblies().GetAssembliesMenuItem("Loaded assemblies");

            command.Execute();
        }
Exemplo n.º 2
0
        private static CompositeMenuCommand GetAssemblyTypesMenuItem(this Assembly assembly, IMenuCommand parent)
        {
            if (assembly == null)
            {
                throw new ArgumentNullException(nameof(assembly));
            }

            var result = new CompositeMenuCommand(assembly.FullName, parent);

            result.AddCommands(assembly.GetExportedTypes().OrderBy(x => x.FullName).Select(x => GetTypeMenuItem(x, result)));

            return(result);
        }
Exemplo n.º 3
0
        private static CompositeMenuCommand GetTypeMenuItem(this Type type, IMenuCommand parent)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }

            var result = new CompositeMenuCommand(type.FullName, parent);

            result.AddCommands(type.GetMembers().OrderBy(x => x.MemberType).ThenBy(x => x.Name).Select(x => GetMemberMenuItem(x, result)));

            return(result);
        }
Exemplo n.º 4
0
        public static CompositeMenuCommand GetAssembliesMenuItem(this IEnumerable <Assembly> assemblies, string header, IMenuCommand parent = null)
        {
            if (assemblies == null)
            {
                throw new ArgumentNullException(nameof(assemblies));
            }

            var result = new CompositeMenuCommand(header, parent ?? ExitMenuCommand.Instance);

            var commands = assemblies
                           .OrderBy(asm => asm.GetName().Name)
                           .Select(x => GetAssemblyTypesMenuItem(x, result));

            result.AddCommands(commands);

            return(result);
        }