结构图是否具有拦截功能,为什么我还需要像温莎城堡这样的另一个图书馆?

时间:2013-06-12 10:43:03

标签: c# aop structuremap interception

strucutremap是否具有拦截能力,为什么我还需要像温莎城堡这样的另一个图书馆呢? 是否有一种来自结构图的原生方式呢?

AOP Logging with StructureMap是一个类似的问题,但答案可以追溯到城堡代理。

感谢

1 个答案:

答案 0 :(得分:0)

The documentation回答这个问题:

  

StructureMap 2.5+增加了后处理甚至拦截的能力   并替换正在创建的对象。虽然 StructureMap永远不会   包括自己的面向方面编程模型(世界没有   需要一个新的,可以使用下面显示的拦截技术   从现有AOP工具(如策略注入)应用运行时AOP   来自Microsoft的应用程序阻止。

     

一般来说,拦截有三种方式:

     

1)OnCreation() - 在创建后注册一个针对新对象运行的动作

     

2)EnrichWith() - 在创建后注册一个针对新对象运行的Func,并为您提供返回与原始对象不同的对象的选项

     

3)实现TypeInterceptor接口的自定义类(所有拦截技术背后的运行时模型)

因此,简而言之,StructureMap的拦截功能涉及操纵/替换容器中的配置对象 - 不应用AOP样式拦截。

总结一下:

  

strucutremap是否具有拦截能力

是的,但不适用于AOP式拦截

  

为什么我需要像温莎城堡这样的另一个图书馆?

因为AOP不在StructureMap体系结构的范围内。已有多个好的解决方案(包括Castle Proxy)。