我想[HandlerAttribute]
在我的项目中使用 -based 拦截(因为它对新开发人员来说更明显)。但是,除非我new InterceptionBehavior<PolicyInjectionBehavior>()
在RegisterType
.
有没有一种简单的方法可以[HandlerAttribute]
在不污染RegisterType
呼叫的情况下对所有内容进行检测?
我想[HandlerAttribute]
在我的项目中使用 -based 拦截(因为它对新开发人员来说更明显)。但是,除非我new InterceptionBehavior<PolicyInjectionBehavior>()
在RegisterType
.
有没有一种简单的方法可以[HandlerAttribute]
在不污染RegisterType
呼叫的情况下对所有内容进行检测?
我认为以下应该实现你所追求的
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]
的 s 上出现。