1

我有一个一次性类,它使用一次性模式实现 IDisposalbe 接口。为了保持这些约束,我需要确保当对象被释放后,对任何公共方法的任何后续调用都会引发 ObjectDisposedException。显而易见的解决方案是检查 bool 值 isDisposed 并抛出异常。但是我如何使用一些基于反射的解决方案(如果有的话或其他方法)自动将此约束应用于每个公共方法。我不想做的是在我拥有的每个方法中进行此检查(即在每次调用之前我不想调用 IsObjectDisposed() 方法)

除了我之前描述的实际应用之外,我还需要知道一种自动调用方法的方法,比如 Foo(),每次调用类的方法,比如 MyClass

4

2 回答 2

2

海事组织,您在这里有两个解决方案:

  • 或手动调用它们,因此实际上编写代码,为每个public方法执行检查。

  • 或者可以使用面向方面的编程将函数调用注入到由某个属性标记的每个方法的开头。

于 2012-10-04T09:26:30.640 回答
0

您是否考虑过在使用代码之前简单地执行一次空检查?

IE。if(null!=object) { 做操作 }

或者您是否正在寻找某种对象包装器而不是使用 virtual 关键字?例如,使用统一的方面或弹簧使用方面。这些允许您将依赖注入代码到您的应用程序中,并允许您通过代码库应用“横切关注点”,即安全性、日志记录、打印和边界检查。

于 2012-10-04T09:26:23.103 回答