Ninject的Dispose方法真的有必要吗?

时间:2012-05-25 12:13:15

标签: c# ninject ninject-2

我们目前正在评估是否可以将Ninject用于未来的项目。一个条件是,libary不应该强迫我们调用Dispose方法。那么,真的有必要吗?不会调用它会导致内存泄漏和其他丑陋的东西吗?

2 个答案:

答案 0 :(得分:3)

我不认为Ninject是一个纯粹的托管解决方案,如果不调用Dispose(),就会出现内存泄漏或其他问题。特别是因为您只是在终止应用程序之前调用内核的Dispose()方法作为最后的事情之一,因此GC或OS的进程隔离会回收内存。

你想要一个允许你调用Dispose()的IoC容器的原因是它将在任何实现IDisposable的服务提供者上调用Dispose()。我认为,这是一个有用的功能,因为服务提供商可能拥有非托管资源或需要等待异步操作完成(或者至少以有序的方式中止它们)。

我认为这就是大多数在其内核/提供者/定位器类上实现IDisposable的IoC容器背后的原因。

为什么在IoC容器上使用Dispose()会给您带来麻烦?到目前为止,我总是找到一个合适的地方来调用它,无论是在控制台应用程序,基于XAML的WPF应用程序还是Xbox游戏中。

答案 1 :(得分:3)

您可以通过某种方式配置Ninject以帮助您进行Dispose。这取决于您使用Ninject的范围策略。 例如:

相关问题