private static ConfigureMethodInfo CacheIn(IDictionary <Tuple <int, Type>, ConfigureMethodInfo> cache, Tuple <Type, ConfigurePriority, string> configureInfo) { var configure = new ConfigureMethodInfo(configureInfo); var configureKey = Tuple.Create(configure.Method.MetadataToken, configure.Type); return(cache.GetValueOrAdd(configureKey, configure)); }
private static int CalculateWeight(ConfigureMethodInfo method, IDictionary <ConfigureMethodInfo, int> weightCache) { int weight; if (!weightCache.TryGetValue(method, out weight)) { weight = method.Dependents.Count() + method.Method.GetPriority().Priority * -1; foreach (var dependent in method.Dependents) { weight += CalculateWeight(dependent, weightCache); } weightCache[method] = weight; } return(weight); }
private void AddDependency(ConfigureMethodInfo dependency) { _dependencies.Add(dependency); }
internal void AddDependent(ConfigureMethodInfo dependent) { _dependents.Add(dependent); dependent.AddDependency(this); }