C# 如何检查已释放的对象并在已释放的方法中抛出ObjectDisposedException
我有一个使用一次性模式实现IDisPoalBe接口的一次性类。为了维护约束,我需要确保当对象被释放时,对任何公共方法的任何后续调用都会抛出ObjectDisposedException。显而易见的解决方案是检查bool值isDisposed并抛出异常。但我如何使用一些基于反射的解决方案(如果有的话或其他方法)来自动将此约束应用于每个公共方法。我不想做的是在我拥有的每个方法中执行此检查(即在每次调用之前,我不想调用IsObjectDisposed()方法)C# 如何检查已释放的对象并在已释放的方法中抛出ObjectDisposedException,c#,.net,design-patterns,objectdisposedexception,disposable,C#,.net,Design Patterns,Objectdisposedexception,Disposable,我有一个使用一次性模式实现IDisPoalBe接口的一次性类。为了维护约束,我需要确保当对象被释放时,对任何公共方法的任何后续调用都会抛出ObjectDisposedException。显而易见的解决方案是检查bool值isDisposed并抛出异常。但我如何使用一些基于反射的解决方案(如果有的话或其他方法)来自动将此约束应用于每个公共方法。我不想做的是在我拥有的每个方法中执行此检查(即在每次调用之前,我不想调用IsObjectDisposed()方法) 除了我前面描述的实际应用程序之外,我还需
除了我前面描述的实际应用程序之外,我还需要知道一种自动调用方法的方法,比如说,每次调用一个类的方法时都调用Foo(),比如说MyClass,您是否考虑过在使用代码之前只执行空检查 即如果(空!=对象) { 做手术 }
或者您正在寻找某种对象包装,而不是使用virtual关键字?ie使用unity或spring等方面。这些允许您将依赖项注入到应用程序中,并允许您通过代码库(即安全性、日志记录、打印和边界检查)应用“交叉关注点”。Imo,这里有两种解决方案:
- 或者手动调用它们,以便对每个
方法执行检查public
- 或者可以使用将函数调用注入到由某个属性标记的每个方法的开头