System.Web.Mvc.TypeCacheUtil.GetFilteredTypesFromAssemblies C# (CSharp) Method

GetFilteredTypesFromAssemblies() public static method

public static GetFilteredTypesFromAssemblies ( string cacheName, Predicate predicate, IBuildManager buildManager ) : List
cacheName string
predicate Predicate
buildManager IBuildManager
return List
        public static List<Type> GetFilteredTypesFromAssemblies(string cacheName, Predicate<Type> predicate, IBuildManager buildManager)
        {
            TypeCacheSerializer serializer = new TypeCacheSerializer();

            // first, try reading from the cache on disk
            List<Type> matchingTypes = ReadTypesFromCache(cacheName, predicate, buildManager, serializer);
            if (matchingTypes != null)
            {
                return matchingTypes;
            }

            // if reading from the cache failed, enumerate over every assembly looking for a matching type
            matchingTypes = FilterTypesInAssemblies(buildManager, predicate).ToList();

            // finally, save the cache back to disk
            SaveTypesToCache(cacheName, matchingTypes, buildManager, serializer);

            return matchingTypes;
        }

Usage Example

 public void EnsureInitialized(IBuildManager buildManager)
 {
     if (_cache == null)
     {
         lock (_lockObj)
         {
             if (_cache == null)
             {
                 List <Type> controllerTypes = TypeCacheUtil.GetFilteredTypesFromAssemblies(
                     TypeCacheName,
                     IsControllerType,
                     buildManager
                     );
                 var groupedByName = controllerTypes.GroupBy(
                     t => t.Name.Substring(0, t.Name.Length - "Controller".Length),
                     StringComparer.OrdinalIgnoreCase
                     );
                 _cache = groupedByName.ToDictionary(
                     g => g.Key,
                     g =>
                     g.ToLookup(
                         t => t.Namespace ?? String.Empty,
                         StringComparer.OrdinalIgnoreCase
                         ),
                     StringComparer.OrdinalIgnoreCase
                     );
             }
         }
     }
 }
All Usage Examples Of System.Web.Mvc.TypeCacheUtil::GetFilteredTypesFromAssemblies