public void Add(MethodDetail key, List <MethodDetail> value) { foreach (var item in value) { this.Add(key, item); } }
//public IEnumerable<List<string>> TracePath(MethodDetail method) //{ // foreach (var item in this[method.MethodFullName]) // { // List<string> methods = new List<string>() { method.MethodFullName }; // yield return methods.AddRange((TracePath(item))); // } //} //private List<List<string>> TracePath(string method) //{ // List<List<string>> result = new List<List<string>>(); // if (this.ContainsKey(method)) // { // foreach (var item in this[method]) // { // var tracePathResult = TracePath(item); // foreach (var path in tracePathResult) // { // path.Insert(0, method); // } // return tracePathResult; // } // } // result.Add(new List<string>() { method }); // return result; //} public IEnumerable <List <string> > TracePath(MethodDetail method) { List <List <string> > result = new List <List <string> >(); foreach (var item in this[method.MethodFullName]) { result = TracePath(item, new List <string>() { method.MethodFullName }); } return(result); }
public void Add(MethodDetail key, MethodDetail value) { List <string> detail = null; if (_filterBy == null || key.MethodFullName.Contains(_filterBy)) { if (base.TryGetValue(key.MethodFullName, out detail)) { var key1 = base.Keys.Where(item => item.Equals(key.MethodFullName)).FirstOrDefault(); if (key1 == null) { throw new Exception("Key Collision"); } detail.Add(value.MethodFullName); } else { detail = new List <string>(); detail.Add(value.MethodFullName); base.Add(key.MethodFullName, detail); } } }