protected override void OnGatherDependencies(DependencyListConfig config) { config.MergeComponents(_systems.Select(it => it.Dependencies)); for (var i = 0; i < _systems.Count; i++) { var a = _systems[i].Dependencies; for (var j = 0; j < _systems.Count; j++) { if (i == j) { continue; } var b = _systems[j].Dependencies; if (a.IsDependentOn(b)) { _depGraph.AddEdge(_systems[i], _systems[j]); } } } if (!_depGraph.Validate()) { var sb = new StringBuilder(); sb.AppendLine("Cyclic nodes detected"); sb.AppendLine(); //try //{ var depMatirx = new ComponentMatrix(_depGraph.PostOrder(_depGraph.CyclicNode)); sb.AppendLine(depMatirx.ToString()); sb.AppendLine(); //} //catch (Exception ex) { } sb.AppendLine(_depGraph.ToString()); throw new Exception(sb.ToString()); } }
protected abstract void OnGatherDependencies(DependencyListConfig config);
private void GatherDependencies(DependencyListConfig config) { config.Type(_type); OnGatherDependencies(config); }