1

为什么Ninject.Extensions.Interception要求所有方法和属性都是虚拟的

我猜它overrides的成员提供了AOP功能,但是这不能通过在方法拦截之前和之后调用方法来实现吗?即使在替换的情况下,原始方法也可以被包装以执行其他操作或不执行任何操作。

其他容器是否需要成员virtual?哪些做,哪些不做。如果有没有?它们是如何工作的?

4

1 回答 1

4

IoC 容器使用的基于动态代理的拦截需要虚拟方法或注入接口而不是类,以便代理可以覆盖这些方法。

如果您想对非虚拟方法执行 AOP,则必须使用像 PostSharp 这样的代码编织 AOP 方法。

于 2013-10-22T14:01:33.743 回答