请查看下面传递嵌套列表作为变量没有设置父列表值
public class Page
{
public string type { get; set; }
public List<Contains> contains { get; set; }
}
public class Contains
{
public string type { get; set; }
public string index {get; set;}
public List<Contains> contains { get; set; }
}
public class PageMachine
{
Page Page;
List<Contains> PageContainer;
public PageMachine(string type)
{
Events = new Dictionary<string, Events>();
PageContainer = new List<Contains>();
Page = new Page()
{
type = type,
contains = PageContainer
};
}
public void Add_Container(string rootIndex, string type, string index)
{
Contains container = new Contains()
{
type = type,
index = index,
};
SetContainer(rootIndex, index, container, Page.contains);
}
private void SetContainer(string rootIndex, string index, Contains newContainer, List<Contains> containers)
{
if(containers == null)
{
containers = new List<Contains>();
containers.Add(newContainer);
}
else if(containers.Count == 0)
{
containers.Add(newContainer);
}
else if(!containers.Exists(x => x.index == rootIndex))
{
containers.Add(newContainer);
}
else
{
foreach (var container in containers)
{
if (container.index == rootIndex)
{
SetContainer(index, index, newContainer, container.contains);
}
else
{
}
}
}
}
执行代码
PageMachine page = new PageMachine("My Page");
page.Add_Container("0", "Parent 1", "0");
page.Add_Container("0", "Child 1 of Perant 1", "0.0");
这背后的想法是为网页创建容器列表,每个容器可以包含更多子容器的列表。包含的索引属性用作映射,父项0
及其子项为0.0
,其子项为0.0.0
。
我面临的问题是当调用递归SetContainer
并且在方法中传递container.contains
时,Page对象并不反映List已更新。
我发现很难解释我的问题,并会澄清是否有问题。
感谢队友,您在回复中非常清楚!非常感激! – 2015-02-11 10:18:28