c# - 我可以使用 C# 集合来保存具有自引用关系的类实例吗?

标签 c# oop collections xml-serialization entity-relationship

我需要在内存中建立一个网络文件集合的模型,但是它们之间的关系。即文件 A(例如 html)可能具有指向文件 B(例如 css)和文件 C(例如 javascript)的链接。文件 D 也可能需要文件 B。如果我想删除文件 A,我需要确保它使用的任何文件(例如文件 B)未被另一个文件(例如文件 D)使用。也许是这样的:

  List<WebFile> list_of_webfiles

  public class WebFile
  - string url
  - bool parentFile

  public class FileRelationship
  - private WebFile parentWebFile;
  - private WebFile childWebFile;

问题 - 在 C# 中对此建模的最佳方法是什么?(例如,哪种集合类型以及如何建模)

注意 - 它必须在内存中建模(没有数据库),我也需要能够序列化为 XML 才能保存。我的意思的一个例子是看起来像这样的东西......

        XmlSerializer serializer = new XmlSerializer(typeof(List<WebFile>));
        TextWriter textWriter = new StreamWriter(CONFIG_FILE_PATH);
        serializer.Serialize(textWriter,  list_of_webfiles);
        textWriter.Close();

谢谢

最佳答案

这似乎暗示了您可能拥有的分层“树”关系

Class WebFile:
- URL : string
- Parent : WebFile
- Children : WebFile[] (could be a list depending on the need)

然后在某个地方你有一个

List<WebFile> webFiles;

这种方法可以很容易地遍历网络文件树并找到相关文件,但很难列出所有文件本身。

或者,您可以单独存储文件列表和关系

Class WebFile
- URL : string

Class WebFileRelationship
- Parent : WebFile
- Child : WebFile

你有2个容器

List<WebFile> webFiles;
List<WebFileRelationship> relationships;

这种方法可以很容易地列出所有关系或所有文件,但很难确定各个关系。

这完全取决于您的应用程序,您是否需要有关单个文件或关系的更多信息?

关于c# - 我可以使用 C# 集合来保存具有自引用关系的类实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1523756/

相关文章:

python:类范围内的函数

java - 如何在java中查找arraylist的重复对象

c# - 如何查找当前使用的是哪个串口?

c# - 在 C# 中使用 HResult、interop 和相关的东西

c# - 即使指定了 "return",方法中的验证也会继续运行其余代码

Kotlin 会自动生成 Getter 和 Setter,但为什么?

c# - MonoDevelop 可以即时突出显示错误和警告吗?

Java OOP - 学习数组元素实例,用于模拟人类生活......交配和新生

java - 从集合中获取第一个(也是唯一的值)

java - 为什么 HashSet 调用 compareTo 方法并导致 NullPointerException