Exemple #1
0
        public void AutoScan()
        {
            var cormo        = typeof(IComponentManager).Assembly;
            var assemblyName = cormo.GetName();

            var assemblies = WhereReferencesRecursive(AppDomain.CurrentDomain.GetAssemblies(), assemblyName)
                             .Union(new[] { cormo }).ToArray();

            var types = (from assembly in assemblies.AsParallel()
                         from type in assembly.GetLoadableTypes()
                         where type.IsVisible && type.IsClass && !type.IsPrimitive
                         select type).ToArray();

            var componentTypes = types.AsParallel().Where(TypeUtils.IsComponent).ToArray();

            var assemblyConfigs = (from assembly in assemblies.AsParallel()
                                   from import in assembly.GetAttributesRecursive <ImportAttribute>()
                                   from type in import.Types
                                   select type).ToArray();

            AddTypes(componentTypes);
            var configs = GetConfigs(_environment.Components, assemblyConfigs);

            foreach (var c in configs)
            {
                _environment.AddConfiguration(c);
            }
        }
        public void AutoScan()
        {
            var cormo        = typeof(IComponentManager).Assembly;
            var assemblyName = cormo.GetName();

            var assemblies = WhereReferencesRecursive(AppDomain.CurrentDomain.GetAssemblies(), assemblyName).ToArray();

            var types = (from assembly in assemblies.AsParallel()
                         from type in assembly.GetLoadableTypes()
                         where type.IsClass && !type.IsPrimitive
                         select type)
                        .AsEnumerable().Union(BuiltInTypes)
                        .ToArray();

            var extensions = types.Where(typeof(IExtension).IsAssignableFrom).ToArray();

            types = types.Except(extensions).ToArray();

            Container.Instance.Initialize(_manager);
            AddContexts();
            RegisterExtensions(extensions);

            var componentTypes  = types.AsParallel().Where(TypeUtils.IsComponent).ToArray();
            var assemblyConfigs = (from assembly in assemblies.AsParallel()
                                   from import in assembly.GetAttributesRecursive <ImportAttribute>()
                                   from type in import.Types
                                   select type).ToArray();

            AddTypes(componentTypes);
            var configs = GetConfigs(_environment.Components, assemblyConfigs);

            foreach (var c in configs)
            {
                _environment.AddConfiguration(c);
            }
        }