如何使用动态代理拦截IInvocation?

问题描述 投票:0回答:2

是否有可能使用动态代理和windsor拦截IInvocation(如果这种情况甚至需要windsor。我使用它来配置代理生成)? 我想记录一个拦截已经改变了对截获方法的调用。 例如,传递的参数已更改或返回值。 请注意,这仅用于调试目的。

c# .net castle-windsor castle-dynamicproxy
2个回答
0
投票

请遵循以下代码:

public class TransactionInterceptor : IInterceptor
{
    private readonly IUnitOfWork _UnitOfWork;
    public TransactionInterceptor(IUnitOfWork unitOfWork)
    {
        _UnitOfWork = unitOfWork;
    }

    public void Intercept(IInvocation invocation)
    {
        _UnitOfWork.Begin();

        try
        {
            invocation.Proceed();
            _UnitOfWork.Commit();
        }
        catch (Exception)
        {
            _UnitOfWork.RollBack();
            throw;
        }
    }
}

-2
投票

是的,它可能,我建议阅读this

© www.soinside.com 2019 - 2024. All rights reserved.