コード例 #1
0
        public void Intercept(IInvocation invocation)
        {
            IChangeProxyTarget changeTarget = (IChangeProxyTarget)invocation;

            changeTarget.ChangeInvocationTarget(target);
            invocation.Proceed();
        }
コード例 #2
0
    public void Intercept(IInvocation invocation)
    {
        IMyService         realService       = _realServiceFactory.CreateRealService();
        IChangeProxyTarget changeProxyTarget = invocation as IChangeProxyTarget;

        changeProxyTarget.ChangeInvocationTarget(realService);
        invocation.Proceed();
    }
コード例 #3
0
        public void Intercept(IInvocation invocation)
        {
            IStorageNode master = invocation.InvocationTarget as IStorageNode;

            if (master.IsDead)
            {
                IChangeProxyTarget cpt = invocation as IChangeProxyTarget;
                // 将补代理对象master更换为slave
                cpt.ChangeProxyTarget(_slave);
                // 测试中恢复master状态,以便看到随后调用仍然使用master这一效果
                master.IsDead = false;
            }
            invocation.Proceed();
        }