【问题标题】:How to intercept an IInvocation using dynamic proxy?如何使用动态代理拦截 IInvocation?
【发布时间】:2011-08-21 02:46:41
【问题描述】:

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

【问题讨论】:

    标签: c# .net castle-windsor castle-dynamicproxy


    【解决方案1】:

    按照下面的代码:

    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

      【讨论】:

      • 您的回答没有解释如何,而是参考了一个非常通用的教程。您的回答与粘贴 msdn.microsoft.com 作为特定 C# 问题的答案的人非常相似。 再次阅读我的问题
      猜你喜欢
      • 2011-04-26
      • 2012-09-16
      • 2019-02-15
      • 2012-12-18
      • 2013-11-10
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多