2011-11-14 19 views

回答

1

我认为有以下应该达到你以后

定义UnityContainerExtension像这样:

public class InterceptionExtension : UnityContainerExtension 
{ 
    protected override void Initialize() 
    { 
     Context.Registering += OnRegister; 
     Context.RegisteringInstance += OnRegisterInstance; 
    } 

    public override void Remove() 
    { 
     Context.Registering -= OnRegister; 
     Context.RegisteringInstance -= OnRegisterInstance; 
    } 

    private void OnRegister(object sender, RegisterEventArgs e) 
    { 
     Container.Configure<Interception>() 
      .SetInterceptorFor(e.TypeTo, new VirtualMethodInterceptor()); 
    } 

    private void OnRegisterInstance(object sender, RegisterInstanceEventArgs e) 
    { 
     Container.Configure<Interception>() 
      .SetInterceptorFor(e.RegisteredType, new VirtualMethodInterceptor()); 
    } 
} 

一下添加到容器:

_container.AddNewExtension<InterceptionExtension>(); 

然后为每个注册类型,这应该配置Interception应用于虚拟成员。然后这应该适用于任何应用的[HandlerAttribute]

+0

据我所知,建议的解决方案不会选择'[HandlerAttribute]',因为我的主要问题是'PolicyInjectionBehavior',而不是'Interceptor'。然而,我认为这个想法本身是正确的,我只是用添加策略行为来替换'SetInterceptorFor'。 –