J'ai la toto classe comme ceci:Création d'une pile <T> avec le type anonyme
class Foo
{
public int id{get;set;}
public IEnumerable<Foo> Childs;
//some other properties
}
Maintenant, je veux traiter une logique métier sur un Foo-objet et tous ses enfants comme ceci:
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});
}
}
J'ai besoin de garder une trace du niveau (relatif)/profondeur des enfants. Comment créer un Stack<T>
pour le type anonyme? Bien sûr, je pourrais créer une classe simple au lieu du type anonyme (ou une fonction récursive plus compliquée), mais comment résoudre ce problème sans une classe supplémentaire?
Pouvez-vous s'il vous plaît formater votre code :) –
déjà fait :) –
'Childs' lit un peu étrange, étant donné que le pluriel anglais de « enfant » est :) « enfants » – AakashM