2011-11-14 48 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'。 –