我有一个小问题,我想听听你的意见。
我正在处理文件而不是参考其他文件。从任何文档开始,我都需要获取该文档引用的所有文档的 ID。问题是允许循环引用,所以如果 A ref B ref C,C 可以再次引用 A,我进入循环。如何在 C# 中解决这个问题?
一个小例子:
假设这是一个代表文档的类:
public class Document
{
public Document(int id)
{
this.ID = id;
}
private int m_ID;
public int ID
{
get { return m_ID; }
set { m_ID = value; }
}
private List<Document> m_Children = new List<Document>();
public List<Document> Children
{
get { return m_Children; }
set { m_Children = value; }
}
private List<Document> m_Parent = new List<Document>();
public List<Document> Parent
{
get { return m_Parent; }
set { m_Parent = value; }
}
public Document AddChild(Document child)
{
child.Parent.Add(this);
this.Children.Add(child);
return child;
}
public Document AddChild(int child)
{
Document d = new Document(child);
return AddChild(d);
}
}
现在让我们创建一个包含一些引用的 Document 类:
public static Document CreateReferences()
{
Document d = new Document(1);
Document temp = d.AddChild(2);
for (int i = 3; i < 6; i++)
{
temp = temp.AddChild(i);
}
temp.AddChild(d);
return d;
}
现在我需要在 Document 类中实现一个方法,比如
public List<int> GetReferencedDocuments()
{ }
最好的方法是什么?可以实现任何特定的算法吗?
任何建议都会被接受!
谢谢