Я нашел этот метод, написанный Эрик Липпертом, чтобы пройти граф объекта:C# .Net обход объектного графа
static IEnumerable<T> Traversal<T>(T item, Func<T, IEnumerable<T>> children)
{
var seen = new HashSet<T>();
var stack = new Stack<T>();
seen.Add(item);
stack.Push(item);
yield return item;
while (stack.Count > 0)
{
T current = stack.Pop();
foreach (T newItem in children(current))
{
if (!seen.Contains(newItem))
{
seen.Add(newItem);
stack.Push(newItem);
yield return newItem;
}
}
}
}
Кто-нибудь есть пример того, как использовать это?
Что вы имеете в виду, как его использовать? У вас есть конкретная задача, которую вы пытаетесь решить? – Andrey
Я имею в виду, что я хочу использовать его в качестве примера? –
Вам нужно объяснение кода? –