我有一个一次性类,它使用一次性模式实现IDisposalbe接口。为了维护约束,我需要确保在处理对象时,对任何公共方法的任何后续调用都会抛出ObjectDisposedException。显而易见的解决方案是检查bool值isDisposed并抛出异常。但是,我如何使用一些基于反射的解决方案(如果有任何或其他方法)自动将此约束应用于每个公共方法。我不想做的是在我拥有的每个方法中进行检查(即在每次调用之前我都不想调用IsObjectDisposed()方法)
除了我之前描述的实际应用之外,我需要知道一种自动调用方法的方法,假设Foo()为每个类的方法调用说MyClass
答案 0 :(得分:2)
或手动调用它们,因此代码实际上是每个public
方法执行检查。
或者可以使用Aspect Oriented Programming 将函数调用注入到由某个属性标记的每个方法的开头。
答案 1 :(得分:0)
您是否考虑过在使用代码之前简单地执行空检查?
即。如果(空!=对象) { 做手术 }
或者您正在寻找某种对象包装器而不是使用virtual关键字?即使用统一使用方面或例如春天。这些允许您将Dependency Inject代码插入到您的应用程序中,并允许您通过代码库应用“横切关注点”,即安全性,日志记录,打印和边界检查。