public void InstantiateWithDependencies(LuiObjectParameters p) { if (GetObject(p) == null) { var ordered = p.Dependencies.TopologicalSort(q => q.Dependencies); foreach (var q in ordered) { InstantiateWithDependencies(q); } SetObject(p, LuiObject.Create(p, p.Dependencies.Select(d => GetObject(d)))); } }
public void InstantiateConfiguration() { if (DryRun) { return; } // The topological sort ensures dependencies are resolved in a legal order. // Cyclic dependencies will result in exceptions. var dependencyOrderedParameters = LuiObjectParameters.TopologicalSort(p => p.Dependencies); foreach (var p in dependencyOrderedParameters) { if (GetObject(p) == null) { var dependencies = p.Dependencies.Select(d => GetObject(d)); SetObject(p, LuiObject.Create(p, dependencies)); } } }