/// <summary> /// for the given dependency, gets its tree, sorted from least dependent to most /// </summary> /// <param name="item"></param> /// <returns></returns> public List <NamedDependencyWithObjectInstance> GetDependencyTree(NamedDependencyWithObjectInstance item) { var castedList = this.Items.Cast <NamedDependency>().ToList(); var list = NamedDependency.GetSortedDependencies(castedList, item); return(list.Cast <NamedDependencyWithObjectInstance>().ToList()); }
/// <summary> /// adds a dependency item. will not add if item with the same "Self" already exists. /// </summary> /// <param name="instance"></param> /// <param name="dependency"></param> public bool AddDependency(object instance, NamedDependency dependency) { NamedDependencyWithObjectInstance item = new NamedDependencyWithObjectInstance(instance, dependency); lock (this._stateLock) { if (!this.Items.Exists(x => x.Self == item.Self)) { this.Items.Add(item); return(true); } } return(false); }