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); }
private IRegistration FindSuitableImplementor(Query query, ResolverContext context) { var suitableImplementor = componentLookup.LookupType(query, context); if (suitableImplementor == null) { throw new ServiceNotFoundException(query.ServiceType); } return(suitableImplementor); }