Example #1
0
        internal InjectionProcess <T> CreateInjectionProcess <T>(Kernel kernel)
        {
            if (_defaultGroup == null)
            {
                throw new InvalidOperationException("");
            }

            List <DependencyProvider> dependencyProviders;
            var activity = _defaultGroup.CreateInjectionActivity <T>(kernel, out dependencyProviders);

            var process = new InjectionProcess <T>();

            process.AddActivity(activity);

            if (_customGroups == null)
            {
                _admin.BuildDependencyRelationship(dependencyProviders);
                return(process);
            }

            for (int i = 0; i < _customGroups.Count; i++)
            {
                List <DependencyProvider> depProviders;
                var customActivity = _customGroups[i].CreateInjectionActivity <T>(kernel, out depProviders);
                if (depProviders != null)
                {
                    if (dependencyProviders == null)
                    {
                        dependencyProviders = depProviders;
                    }
                    else
                    {
                        dependencyProviders.AddRange(depProviders);
                    }
                }
                process.AddActivity(customActivity);
            }

            _admin.BuildDependencyRelationship(dependencyProviders);
            return(process);
        }