示例#1
0
        public IEnumerable <object> ResolveAll(Type serviceType)
        {
            var registrations = componentStore.GetRegistrationsForService(serviceType);

            foreach (var item in registrations)
            {
                object resolve = null;
                try
                {
                    resolve = Resolve(item.Service);
                }
                catch
                {
                }
                if (resolve != null)
                {
                    yield return(resolve);
                }
            }
        }
示例#2
0
        public virtual IRegistration LookupType(Query query, ResolverContext context)
        {
            IList <IRegistration> localParents = new List <IRegistration>(context.UsedRegistrations);
            var registrations = componentStore.GetRegistrationsForService(query.ServiceType);

            if (query.Name != null)
            {
                var @default = registrations.SingleOrDefault(p => p.Name == query.Name);
                if (@default == null)
                {
                    throw new ServiceNotFoundException(query.ServiceType, query.Name);
                }
                return(@default);
            }
            var registration = SkipParents(registrations, localParents);

            if (registration == null)
            {
                return(null);
            }
            context.ConsumeRegistration(registration);
            return(registration);
        }