我使用的是Microsoft Unity 2.0,拦截扩展程序没有按预期工作。
考虑以下两行代码:
MyUnityContainer.Configure<Interception>().SetDefaultInterceptorFor<MyType>(new VirtualMethodInterceptor());
var someObject = MyUnityContainer.BuildUp<MyType>(anObject);
这两行没有为您提供某些对象所期望的动态代理!如何针对这种情况进行拦截工作?
答案 0 :(得分:4)
This page解释说您不能使用BuildUp
进行虚拟拦截,因为它只能在创建对象时应用(因为目标对象的子类是动态生成的):
拦截只发生在虚拟上 方法。你必须设置拦截 在对象创建时,不能 拦截现有对象。
答案 1 :(得分:0)
VirtualMethodInterceptor仅适用于新对象。您可以使用Interface或TransparentProxy拦截器来拦截现有实例(因为它们使用显式代理对象)。
我可以看到可能会添加一个VirtualMethodProxyInterceptor,但我认为这只会引起更多的困惑而不是帮助。