private static IEnumerable <Type> GetAppModules() { AssemblyExtensions.LoadAllAssemblies(); var assemblies = AppDomain .CurrentDomain .GetAssemblies() .Where(x => x.GetName().Name.EndsWith("Patterns")); return (assemblies .SelectMany(x => x.GetTypes(), (assembly, type) => type) .Where(x => x.IsPublic && x.IsClass && (typeof(IAppModule).IsAssignableFrom(x)) && x.Name.EndsWith("AppModule"))); }