У меня есть класс Foo, как это:Создание стека <T> с анонимным типом
class Foo
{
public int id{get;set;}
public IEnumerable<Foo> Childs;
//some other properties
}
Теперь я хочу, чтобы обработать некоторую бизнес-логику на Foo-Object и все это дети так:
public void DoSomeWorkWith(Foo x)
{
var firstItem = new {level = 0, item = x};
var s = new Stack<?>(?); //What type to use?
s.Push(firstItem);
while(s.Any())
{
var current = s.Pop();
DoSomeBusiness(current.item);
DoSomeMoreBusiness(current.item);
Log(current.level, current.item.id);
foreach(Foo child in current.item.Childs)
s.Push(new {level = current.level + 1, item = child});
}
}
Мне нужно отслеживать (относительный) уровень/глубину детей. Как создать Stack<T>
для анонимного типа? Конечно, я мог бы создать простой класс вместо анонимного типа (или более сложную рекурсивную функцию), но как решить эту проблему без дополнительного класса?
Можете ли вы форматировать код :) –
уже сделано :) – 2010-08-07 07:28:51
'Childs' читает немного странно, учитывая, что английский множественное число от«ребенок»является«дети»:) – AakashM