代码之家  ›  专栏  ›  技术社区  ›  Falcon

Microsoft Unity:使用Buildup而不是Resolve时拦截不起作用

  •  4
  • Falcon  · 技术社区  · 14 年前

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

    考虑这两行代码:

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

    这两行并不能让你得到你期望的某个对象的动态代理!如何使拦截在这种情况下起作用?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Lee    14 年前

    This page 说明不能使用虚拟拦截 BuildUp 因为它只能在创建对象时应用(因为动态生成了目标对象的子类):

    截取只在虚拟机上发生 方法。你必须设置拦截 在对象创建时不能 截获现有对象。

        2
  •  0
  •   Chris Tavares    14 年前

    VirtualMethodIntercetor仅在新对象上工作。您可以使用接口或TransparentProxy拦截器来截取现有实例(因为这些实例使用显式代理对象)。

    我可以看到添加virtualmethodProxyInterceptor的可能性,但我希望它只会导致更多的混乱,而不是帮助。