public IRegistration LookupType(Query targetType, ResolverContext context)
        {
            IRegistration registration = underlying.LookupType(targetType, context);

            if (registration != null)
            {
                return(registration);
            }

            Type type = targetType.ServiceType;

            if (!type.IsInterface && !type.IsAbstract && targetType.Name == null)
            {
                lock (createdRegistrations)
                {
                    if (createdRegistrations.ContainsKey(type))
                    {
                        return(createdRegistrations[type]);
                    }
                    var reg = new Registration
                    {
                        Service     = targetType.ServiceType,
                        Implementor = targetType.ServiceType,
                        Lifestyle   = lifestyle
                    };
                    createdRegistrations.Add(type, reg);
                    return(reg);
                }
            }
            return(null);
        }
Esempio n. 2
0
        private IRegistration FindSuitableImplementor(Query query, ResolverContext context)
        {
            var suitableImplementor = componentLookup.LookupType(query, context);

            if (suitableImplementor == null)
            {
                throw new ServiceNotFoundException(query.ServiceType);
            }
            return(suitableImplementor);
        }