4

我正在使用 Microsoft Unity 2.0,并且拦截扩展没有按预期工作。

考虑这两行代码:

MyUnityContainer.Configure<Interception>().SetDefaultInterceptorFor<MyType>(new VirtualMethodInterceptor());
var someObject = MyUnityContainer.BuildUp<MyType>(anObject);

这两行没有得到你期望的 someObject 的动态代理!在这种情况下如何进行拦截?

4

2 回答 2

4

此页面说明您不能使用虚拟拦截 usingBuildUp因为它只能在创建对象时应用(因为目标对象的子类是动态生成的):

拦截仅发生在虚拟方法上。您必须在对象创建时设置拦截,并且不能拦截现有对象。

于 2010-08-26T12:16:31.677 回答
0

VirtualMethodInterceptor 仅适用于新对象。您可以使用 Interface 或 TransparentProxy 拦截器来拦截现有实例(因为它们使用显式代理对象)。

我可以看到可能会添加一个 VirtualMethodProxyInterceptor,但我希望它只会引起更多的混乱而不是帮助。

于 2010-08-26T17:31:59.727 回答