예제 #1
0
        public void UpdateFromDefinition(ResolverUsageDefinitionList definitionList)
        {
            ResetCacheUsages();

            foreach (ResolverUsageDefinitionList.Entry entry in definitionList.CacheUsages)
            {
                string cacheTypeFullName = entry.CacheType.FullName;

                if (!CreatedCaches.ContainsKey(cacheTypeFullName))
                {
                    IDependencyCache       cache        = NodeDependencyLookupUtility.InstantiateClass <IDependencyCache>(entry.CacheType);
                    CreatedDependencyCache createdCache = new CreatedDependencyCache(cache);

                    CreatedCaches.Add(cacheTypeFullName, createdCache);
                }

                CreatedCaches[cacheTypeFullName].AddResolver(entry.ResolverType, entry.ConnectionTypes);
            }

            ConnectionTypeLookup = new ConnectionTypeLookup(GetCaches());
            NodeHandlerLookup    = NodeDependencyLookupUtility.BuildNodeHandlerLookup();
        }
예제 #2
0
        public void AddResolver(Type resolverType, List <string> connectionTypes)
        {
            string resolverTypeFullName = resolverType.FullName;

            if (!CreatedResolvers.ContainsKey(resolverTypeFullName))
            {
                IDependencyResolver dependencyResolver = NodeDependencyLookupUtility.InstantiateClass <IDependencyResolver>(resolverType);
                CreatedResolver     resolver           = new CreatedResolver(dependencyResolver);
                CreatedResolvers.Add(resolverTypeFullName, resolver);
            }

            CreatedResolver createdResolver = CreatedResolvers[resolverTypeFullName];

            string[] collection = connectionTypes != null?connectionTypes.ToArray() : createdResolver.Resolver.GetConnectionTypes();

            createdResolver.ConnectionTypes = new HashSet <string>(collection);

            ResolverUsages.Add(createdResolver);
            ResolverUsagesLookup.Add(createdResolver.Resolver.GetId(), createdResolver);

            createdResolver.IsActive = true;
        }