Ejemplo n.º 1
0
        public static bool ContainsRegistration(this AvlTreeKeyValue <Type, ArrayStoreKeyed <object, IServiceRegistration> > repository, Type type, object name)
        {
            var registrations = repository.GetOrDefault(type);

            if (name != null && registrations != null)
            {
                return(registrations.GetOrDefault(name) != null);
            }

            if (registrations != null || !type.IsClosedGenericType())
            {
                return(registrations != null);
            }

            registrations = repository.GetOrDefault(type.GetGenericTypeDefinition());
            return(registrations?.Any(reg => reg.ValidateGenericConstraints(type)) ?? false);
        }
Ejemplo n.º 2
0
        private static MetaInformation GetOrCreateMetaInfo(Type typeTo, RegistrationContextData registrationContextData)
        {
            var found = MetaRepository.GetOrDefault(typeTo);

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

            var meta = new MetaInformation(typeTo, registrationContextData);

            Swap.SwapValue(ref MetaRepository, repo => repo.AddOrUpdate(typeTo, meta));
            return(meta);
        }
Ejemplo n.º 3
0
        public static MetaInformation GetOrCreateMetaInfo(Type typeTo)
        {
            var found = MetaRepository.GetOrDefault(typeTo);

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

            var meta = new MetaInformation(typeTo);

            Swap.SwapValue(ref MetaRepository, (t1, t2, t3, t4, repo) =>
                           repo.AddOrUpdate(t1, t2), typeTo, meta, Constants.DelegatePlaceholder, Constants.DelegatePlaceholder);
            return(meta);
        }