Esempio n. 1
0
        public static Type[] GetSubTypes <T>(string assemblyName = "")
        {
            IEnumerable <Assembly> assemblies = AllLoadedAssemblies;

            if (AllLoadedAssemblies.Count(a => assemblyName.IsNotEmpty() && a.GetName().Name == assemblyName) > 0)
            {
                assemblies = AllLoadedAssemblies.Where(a => a.FullName.StartsWith(assemblyName));
            }
            else if (assemblyName.IsNotEmpty())
            {
                return(null);
            }

            return(assemblies
                   .Select(a => a.GetTypes())
                   .SelectMany(t => t)
                   .Where(t => t.IsSubclassOf(typeof(T)) && !t.IsAbstract)?
                   .ToArray());
        }