重构实现IDisposable

时间:2015-11-21 12:24:22

标签: c# global using idisposable

我正在维护由其他开发人员编写的代码。我在一个相当大的课程中遇到了这个(假设20或30个函数 - 我只在下面显示3个):

public class Widget
{
     DisposableObject do = new DisposableObject();

     private void function1()
     {
          do.something();
          ...
     }

     private void function2()
     {
          do.something();
          ...
     }

     private void function3()
     {
          do.something();
          ...
     }

}

对于我的问题,考虑以下因素非常重要:

  • DisposableObject实现IDisposable,因此可以使用 使用C#using语句。
  • do 是一个由多个人使用的类全局对象 课堂内的功能。假设为了讨论我 无法轻易确定一个函数是否与执行有关 更改其状态然后调用其中的另一个函数的对象 班级。此外,班级中的任何功能都不会将执行作为 参数 - 它们都进入了类全局实例。
  • 我检测到对象执行保存与数据库的连接 因为这些功能中的一些是错误的而且对象不是 处理得当。

理想情况下,我想以某种方式重构这个类,以便我可以做这样的事情:

using (DisposableObject do = new DisposableObject())
{ ... }

不幸的是,我不太了解对象如何在这个类中改变各种函数 - 否则我可以删除全局声明并为每个函数添加using语句。

是否有一种简洁的方法可以使用依赖注入或工厂来确保此类继续以其功能失调的方式运行,但在使用的代码时会正确处理对象执行这堂课完成了它需要做的事情?我想确保得到妥善处理,但我也想确保我不会破坏现有代码。

感谢您的帮助。

0 个答案:

没有答案