在容器 class 中处理 C# 事件的最佳方式是什么?

What is the best way to handle C# events inside a container class?

我编写了一个名为 DownloadTask 的 C# class,它会在文件下载完成时触发一个事件。我想将多个 DownloadTask class 全部保存在容器 class、DownloadTaskManager 中。 DownloadTaskManager 包含一个 List<DownloadTask> tasks 对象。我使用 Add()Remove()ClearAllTasks() 等方法与该列表进行交互。我的问题是,如果我想让我的容器 class、DownloadTaskManager 也跟踪每个 DownloadTask 的事件,最好的方法是什么?

如果 "keep track of each Download Task event" 你的意思是将听众附加到他们:

  • 你可以先把事件添加到任务中再添加,但我觉得这不是你想要的
  • 你可以修改 DownloadTaskManager 公开的 Add 方法的签名(如果你没有,你应该创建它)到类似 Add(string id, DownloadTask task) 的东西,然后您可以创建类似 RegisterEvent(string id, Action onDownloaded) 的方法来将特定事件处理程序添加到特定任务

您必须向 DownloadTaskManager class 外部提供一种识别特定任务的方法,以便您可以在内部映射它们。