Example #1
0
        private static IEnumerable<Type> FilterTypesInAssemblies(IBuildManager buildManager, Predicate<Type> predicate)
        {
            // Go through all assemblies referenced by the application and search for types matching a predicate
            IEnumerable<Type> typesSoFar = Type.EmptyTypes;

            ICollection assemblies = buildManager.GetReferencedAssemblies();
            foreach (Assembly assembly in assemblies)
            {
                Type[] typesInAsm;
                try
                {
                    try
                    {
                        typesInAsm = assembly.GetExportedTypes();
                    }
                    catch (NotImplementedException)
                    {
                        typesInAsm = assembly.GetTypes();
                    }
                }
                catch (ReflectionTypeLoadException ex)
                {
                    typesInAsm = ex.Types;
                }
                typesSoFar = typesSoFar.Concat(typesInAsm);
            }
            return typesSoFar.Where(type => TypeIsPublicClass(type) && predicate(type));
        }
Example #2
0
        private static IEnumerable <Type> FilterTypesInAssemblies(
            IBuildManager buildManager,
            Predicate <Type> predicate
            )
        {
            // Go through all assemblies referenced by the application and search for types matching a predicate
            IEnumerable <Type> typesSoFar = Type.EmptyTypes;

            ICollection assemblies = buildManager.GetReferencedAssemblies();

            foreach (Assembly assembly in assemblies)
            {
                Type[] typesInAsm;
                try
                {
                    typesInAsm = assembly.GetTypes();
                }
                catch (ReflectionTypeLoadException ex)
                {
                    typesInAsm = ex.Types;
                }
                typesSoFar = typesSoFar.Concat(typesInAsm);
            }
            return(typesSoFar.Where(type => TypeIsPublicClass(type) && predicate(type)));
        }
Example #3
0
 //时时刻刻能感受到,是我要怎么写代码,而不是我只能如何写代码,而是我真正驾驭着代码。
 private static IEnumerable<Type> FilterTypesInAssemblies(IBuildManager buildManager,Predicate<Type> predict)
 {
     //遍历所有的引用的assembly去找到匹配predict的Type
     IEnumerable<Type> typesSoFar = Type.EmptyTypes;
     ICollection assemblies = buildManager.GetReferencedAssemblies();
     foreach (Assembly assembly in assemblies)
     {
         Type[] typesInAsm = assembly.GetTypes();
         typesSoFar = typesSoFar.Concat(typesInAsm); //这么写有什么必要吗???
     }
     return typesSoFar.Where(type=>predict(type));
 }
Example #4
0
 private static List<Type> GetAllControllerTypes(IBuildManager buildManager) {
     // Go through all assemblies referenced by the application and search for
     // controllers and controller factories.
     List<Type> controllerTypes = new List<Type>();
     ICollection assemblies = buildManager.GetReferencedAssemblies();
     foreach (Assembly assembly in assemblies) {
         Type[] typesInAsm;
         try {
             typesInAsm = assembly.GetTypes();
         }
         catch (ReflectionTypeLoadException ex) {
             typesInAsm = ex.Types;
         }
         controllerTypes.AddRange(typesInAsm.Where(IsControllerType));
     }
     return controllerTypes;
 }
 private static IEnumerable<Type> DiscoverControllerTypes(IBuildManager buildManager)
 {
     List<Type> types = new List<Type>();
     foreach (Assembly assembly in buildManager.GetReferencedAssemblies())
     {
         Type[] typesInAsm;
         try
         {
             typesInAsm = assembly.GetTypes();
         }
         catch (ReflectionTypeLoadException ex)
         {
             typesInAsm = ex.Types;
         }
         types.AddRange(typesInAsm.Where(IsController));
     }
     return types;
 }
        private static IEnumerable <Type> DiscoverControllerTypes(IBuildManager buildManager)
        {
            List <Type> types = new List <Type>();

            foreach (Assembly assembly in buildManager.GetReferencedAssemblies())
            {
                Type[] typesInAsm;
                try
                {
                    typesInAsm = assembly.GetTypes();
                }
                catch (ReflectionTypeLoadException ex)
                {
                    typesInAsm = ex.Types;
                }
                types.AddRange(typesInAsm.Where(IsController));
            }
            return(types);
        }
        private static IEnumerable<Type> FilterTypesInAssemblies(IBuildManager buildManager, Predicate<Type> predicate)
        {
            // Go through all assemblies referenced by the application and search for types matching a predicate
            IEnumerable<Type> typesSoFar = Type.EmptyTypes;

            ICollection assemblies = buildManager.GetReferencedAssemblies();
            foreach (Assembly assembly in assemblies)
            {
                if (assembly.IsDynamic)
                {
                    // can't call GetExportedTypes on a dynamic assembly
                    continue;
                }

                typesSoFar = typesSoFar.Concat(assembly.GetExportedTypes());
            }

            return typesSoFar.Where(type => predicate(type));
        }
Example #8
0
        /// <summary>
        /// Aplica o filtro sobre os assemblies do BuildManager.
        /// </summary>
        /// <param name="buildManager"></param>
        /// <param name="predicate"></param>
        /// <returns></returns>
        private static IEnumerable <Type> FilterTypesInAssemblies(IBuildManager buildManager, Predicate <Type> predicate)
        {
            IEnumerable <Type> typesSoFar = Type.EmptyTypes;
            var assemblies = buildManager.GetReferencedAssemblies();

            foreach (System.Reflection.Assembly assembly in assemblies)
            {
                Type[] typesInAsm;
                try
                {
                    typesInAsm = assembly.GetTypes();
                }
                catch (System.Reflection.ReflectionTypeLoadException ex)
                {
                    typesInAsm = ex.Types;
                }
                typesSoFar = typesSoFar.Concat(typesInAsm);
            }
            return(typesSoFar.Where(type => TypeIsPublicClass(type) && predicate(type)));
        }
Example #9
0
        private static List <Type> GetAllControllerTypes(IBuildManager buildManager)
        {
            // Go through all assemblies referenced by the application and search for
            // controllers and controller factories.
            List <Type> controllerTypes = new List <Type>();
            ICollection assemblies      = buildManager.GetReferencedAssemblies();

            foreach (Assembly assembly in assemblies)
            {
                Type[] typesInAsm;
                try {
                    typesInAsm = assembly.GetTypes();
                }
                catch (ReflectionTypeLoadException ex) {
                    typesInAsm = ex.Types;
                }
                controllerTypes.AddRange(typesInAsm.Where(IsControllerType));
            }
            return(controllerTypes);
        }
Example #10
0
        private static IEnumerable <Type> FilterTypesInAssemblies(IBuildManager buildManager, Predicate <Type> predicate)
        {
            IEnumerable <Type> emptyTypes = Type.EmptyTypes;

            foreach (Assembly assembly in buildManager.GetReferencedAssemblies())
            {
                Type[] types;
                try
                {
                    types = assembly.GetTypes();
                }
                catch (ReflectionTypeLoadException exception)
                {
                    types = exception.Types;
                }
                emptyTypes = emptyTypes.Concat <Type>(types);
            }
            return(from type in emptyTypes
                   where TypeIsPublicClass(type) && predicate(type)
                   select type);
        }
Example #11
0
		private static IEnumerable<Type> FilterTypesInAssemblies(IBuildManager buildManager, Predicate<Type> predicate)
		{
			IEnumerable<Type> enumerable = Type.EmptyTypes;
			ICollection referencedAssemblies = buildManager.GetReferencedAssemblies();
			foreach (Assembly assembly in referencedAssemblies)
			{
				Type[] types;
				try
				{
					types = assembly.GetTypes();
				}
				catch (ReflectionTypeLoadException ex)
				{
					types = ex.Types;
				}
				enumerable = enumerable.Concat(types);
			}
			return 
				from type in enumerable
				where TypeIsPublicClass(type) && predicate(type)
				select type;
		}