0
私はこの周りに私の頭を得るように見えることはできません。私は、ツリーメニューを構築するためにいくつかのテストデータを構築する必要がありますが、それはちょうど行くか、私は子供の最初のレベルを取得するため、stackverflowエラーが発生します。ここに私が現在持っているコードはあります:再帰的メソッドを使用してツリーメニューを構築するためのデータをテストしますか?
private MenuItem _menuItem;
private int _start = 1;
private const int Stop = 5;
public void BuildMenu()
{
var numberOfChildren = new Random((int) DateTime.Now.Ticks).Next(3, 40);
AutoMapper.Mapper.CreateMap<MenuItem, MenuItemDto>().ConvertUsing<MenuItemConverter>();
_menuItem = new MenuItem() {Id = Guid.NewGuid(), Name = "Main Menu"};
_menuItem.ChildMenuItems = BuildChildItems(_menuItem, numberOfChildren);
var menuDto = AutoMapper.Mapper.Map<MenuItem, MenuItemDto>(_menuItem);
}
public ICollection<MenuItem> BuildChildItems(MenuItem parentMenuItem, int numberOfChildren)
{
var childItems = new Collection<MenuItem>();
_start += 1;
for (var i = 0; i <= numberOfChildren; i++)
{
var childItem = new MenuItem()
{
Id = Guid.NewGuid(),
ParentItemId = parentMenuItem.Id,
Parentitem = parentMenuItem,
Name = "Child Menu Item " + DateTime.Now
};
if (_start != Stop)
{
childItem.ChildMenuItems = BuildChildItems(childItem, numberOfChildren);
}
childItems.Add(childItem);
}
return childItems;
}
public class MenuItem
{
public Guid Id { get; set; }
public string Name { get; set; }
public Guid? ParentItemId { get; set; }
public MenuItem Parentitem { get; set; }
public ICollection<MenuItem> ChildMenuItems { get; set; }
}
これは動作しますが、_startとStop変数に気づくでしょう。私はそれらを入れて、私は、スタックオーバーフローを得ることはありませんが、明らかにそれは私が人口の多い子供のそれぞれの第一レベルを取得する理由です。私はどのレベルにいるのかを追跡する必要があると思っていますが、それをどのように追跡するのかはわかりません。なぜ今日空白を描いているのかわからない。