我有一个场景,使用Castle Dynamic Proxy能够拦截和记录对任何给定类(我们称之为目标类)的消息调用。我通过将目标类包装在一个类中来实现这一点,该类创建具有拦截器的类的代理,以记录所有对目标类的方法调用。
这个方法很好用。唯一的问题是,为了使它起作用,目标类上的所有公共方法都需要是虚方法,这在更多情况下是不可取的。
我可以创建一个解决方案,在创建代理时验证所有方法是否是虚方法,如果不是,则抛出异常,但我更希望能够在生成代理之前使用反射(或其他方法)将方法更改为虚方法。这样,我就可以在所有类上使用它,而不必注意它是否具有虚方法。
我在这里错过了什么,我怎样才能做到这一点?