为什么Ninject.Extensions.Interception需要all methods and properties be virtual?
我猜测overrides
成员提供AOP
功能但是不能通过调用拦截方法之前和之后的方法来实现吗?即使在替换的情况下,原始方法也可以被包装以做其他事情或什么也不做。
其他容器是否要求成员virtual
?哪个做,哪个没做。如果有的话?他们是如何运作的?
答案 0 :(得分:3)
IoC容器使用的基于动态代理的拦截需要虚拟方法或者您注入接口而不是类,以便代理可以对方法进行操作。
如果你想在没有虚拟方法上做AOP,你必须使用像PostSharp这样的代码编织AOP方法。