예제 #1
0
        public T GetSingleton <T>() where T : class
        {
            var instance = _singletonContainer.ResolveType(typeof(T)) as T;

            _scopes.ForEach(s => s.AddTypeInstance(typeof(T), instance));
            return(instance);
        }
예제 #2
0
        public object GetScoped(Type type)
        {
            var dependencies = _instances.GetDependencies(type);

            foreach (var dependency in dependencies)
            {
                if (_instances.Instances.ContainsKey(dependency))
                {
                    continue;
                }
                if (_instances.InitializersTypes.Contains(dependency))
                {
                    GetScoped(dependency);
                    continue;
                }

                var dependencyInstance = _singletonInstances.ResolveType(dependency);
                _instances.AddType(dependency, dependencyInstance);
            }
            return(_instances.ResolveType(type));
        }