Catel.Reflection.TypeCache.InitializeAssemblies C# (CSharp) Метод

InitializeAssemblies() приватный статический Метод

private static InitializeAssemblies ( IEnumerable assemblies, bool force ) : void
assemblies IEnumerable
force bool
Результат void
        private static void InitializeAssemblies(IEnumerable<Assembly> assemblies, bool force)
        {
            lock (_lockObject)
            {
                var assembliesToRetrieve = new List<Assembly>();

                foreach (var assembly in assemblies)
                {
                    var loadedAssemblyFullName = assembly.FullName;
                    var containsLoadedAssembly = _loadedAssemblies.Contains(loadedAssemblyFullName);
                    if (!force && containsLoadedAssembly)
                    {
                        continue;
                    }

                    if (!containsLoadedAssembly)
                    {
                        _loadedAssemblies.Add(loadedAssemblyFullName);
                    }

                    if (ShouldIgnoreAssembly(assembly))
                    {
                        continue;
                    }

                    assembliesToRetrieve.Add(assembly);
                }

                var typesToAdd = GetAssemblyTypes(assembliesToRetrieve);
                foreach (var assemblyWithTypes in typesToAdd)
                {
                    foreach (var type in assemblyWithTypes.Value)
                    {
                        InitializeType(assemblyWithTypes.Key, type);
                    }
                }

#if NET
                var lateLoadedAssemblies = new List<Assembly>();

                lock (_threadSafeAssemblyQueue)
                {
                    while (_threadSafeAssemblyQueue.Count > 0)
                    {
                        var assembly = _threadSafeAssemblyQueue.Dequeue();

                        lateLoadedAssemblies.Add(assembly);
                    }
                }

                if (lateLoadedAssemblies.Count > 0)
                {
                    InitializeAssemblies(lateLoadedAssemblies, false);
                }
#endif
            }
        }