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