我有一个一次性类,它实现了具有一次性模式的IDisposalbe接口。为了维护约束,我需要确保当对象被释放时,任何后续对任何公共方法的调用都会抛出 ObjectDisposedException。显而易见的解决方案是检查布尔值是否已处置并抛出异常。但是我如何使用一些基于反射的解决方案(如果有或其他方法)来自动将此约束应用于每个公共方法。我不想做的是在我拥有的每个方法中进行此检查(即在每次调用之前,我不想调用IsObjectDisposed()方法)
除了我之前描述的实际应用之外,我还需要知道一种自动调用方法的方法,比如说 Foo() 对于类的方法的每次调用,比如 MyClass
Imo,这里有 2 个解决方案:
-
或者手动调用它们,因此实际上编码,对于每个
public
方法执行检查。 -
或者可以使用面向方面的编程将函数调用注入到由某个属性标记的每个方法的开头。
您是否考虑过在使用代码之前简单地执行空检查?
if(null!=object){ 执行操作}
或者您是否正在寻找某种对象包装器而不是使用虚拟关键字? 即使用例如 Unity 或 spring 的方面。这些允许您将依赖项注入代码到应用程序中,并允许您通过代码库(即安全性,日志记录,打印和边界检查)应用"横切关注点"。