我认为有以下应该达到你以后
定义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]
。
据我所知,建议的解决方案不会选择'[HandlerAttribute]',因为我的主要问题是'PolicyInjectionBehavior',而不是'Interceptor'。然而,我认为这个想法本身是正确的,我只是用添加策略行为来替换'SetInterceptorFor'。 –