我发现了一些潜在危险的类,如果它们无法实例化,那么它们就会更加危险,除非它们在using语句中完成.
我想知道是否有办法强制类只以这种方式实例化.
(我知道IL汇编了什么,这就是为什么我不能确定这甚至可能)
干杯,
菲尔.
不,没有办法让编译器强制执行此操作.无论如何,这样做是危险的,因为有时候你想要以IDisposable其他方式使用类,比如将它们封装在第二IDisposable类的实例中,等等.
如果您的类正确实现,那么析构函数应该清理所有未管理的,未处理的资源.这不太理想,但仍然可以工作.
一个好的选择是让析构函数在调试期间引发异常或记录.这可以帮助您在测试和调试期间跟踪任何"错过"使用IDisposable不当的情况.
出于所有有效目的,这是不可能的.特别是因为它不必是一个using,有人可能已经写出了try{}finally{}.您可以确保在终结器中正确处理任何未管理的内容.