我正在使用 Unity、Prism 构建解耦应用程序。
我担心的问题是服务中的资源管理。在示例中更容易解释:假设我们有一些接口 IDataRetriever 为我们提供某种数据。实现被注册为一个实例。这个接口的实现可以基于任何东西:文件(FileDataRetriever)、Sql Server(SqlServerDataRetriever),甚至是简单的字典。配置要使用的具体实现(可能通过配置文件,但没关系)。
一旦应用程序完成工作,取决于服务实现,它有时应该释放资源(例如关闭连接、关闭文件等)或不释放资源(例如,使用 Dictionary 时),但是当我使用解耦抽象时,我不知道这两件事:1. 当资源应该被释放 2.具体实现是否需要资源释放。
我可以想到引导程序实现 IDisposable 的场景,并检查每个服务的 IDisposable 实现,并为所有模块调用 Dispose(这意味着所有模块也必须实现 IDisposable)但它看起来不正确处理此类事情的方式(太复杂)?