1

我想[HandlerAttribute]在我的项目中使用 -based 拦截(因为它对新开发人员来说更明显)。但是,除非我new InterceptionBehavior<PolicyInjectionBehavior>()RegisterType.

有没有一种简单的方法可以[HandlerAttribute]在不污染RegisterType呼叫的情况下对所有内容进行检测?

4

1 回答 1

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]的 s 上出现。

于 2012-02-22T23:37:55.803 回答