【发布时间】:2015-10-14 01:22:50
【问题描述】:
我有一个场景,我使用城堡动态代理来拦截和记录对任何给定类的消息调用(我们称之为目标类)。我通过将目标类包装在一个类中来做到这一点,该类使用一个拦截器创建该类的代理,该拦截器记录对目标类的所有方法调用。 这工作正常。唯一的问题是,为此,目标类上的所有公共方法都必须是虚拟的,这出于更多原因是不可取的。
我可以创建一个解决方案,在创建代理时验证所有方法都是虚拟的,如果不是这种情况则抛出异常,但如果可以使用反射将方法更改为虚拟方法,我更愿意(或其他东西)在生成代理之前。这样我就可以在所有类上使用,而无需注意它是否具有虚拟方法。
我在这里遗漏了什么,我可以以某种方式存档吗?
【问题讨论】:
标签: c# .net reflection castle-dynamicproxy