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(); }
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; }