public override IMessage Invoke(IMessage msg)
        {
            var mcm = msg as IMethodCallMessage;
            if (mcm == null)
                return null;

            if (IsEqualsCall(mcm))
                return ReturnValue(HandleEquals(mcm), mcm);

            if (IsGetHashCodeCall(mcm))
                return ReturnValue(GetHashCode(), mcm);

            if (IsGetTypeCall(mcm))
                return ReturnValue(GetProxiedType(), mcm);

            if (IsToStringCall(mcm))
            {
                var type = GetProxiedType();
                var hashCode = GetHashCode();
                var value = string.Format("RemotingMock_{0}<{1}>", hashCode, type.Name);

                return ReturnValue(value, mcm);
            }

            var invocation = new RemotingInvocation(this, mcm);
            interceptor.Intercept(invocation);

            return ReturnValue(invocation.ReturnValue, invocation.Arguments, mcm);
        }
        public override IMessage Invoke(IMessage msg)
        {
            var mcm = msg as IMethodCallMessage;

            if (mcm == null)
            {
                return(null);
            }

            if (IsEqualsCall(mcm))
            {
                return(ReturnValue(HandleEquals(mcm), mcm));
            }

            if (IsGetHashCodeCall(mcm))
            {
                return(ReturnValue(GetHashCode(), mcm));
            }

            if (IsGetTypeCall(mcm))
            {
                return(ReturnValue(GetProxiedType(), mcm));
            }

            if (IsToStringCall(mcm))
            {
                var type     = GetProxiedType();
                var hashCode = GetHashCode();
                var value    = string.Format("RemotingMock_{0}<{1}>", hashCode, type.Name);

                return(ReturnValue(value, mcm));
            }

            var invocation = new RemotingInvocation(this, mcm);

            interceptor.Intercept(invocation);

            return(ReturnValue(invocation.ReturnValue, invocation.Arguments, mcm));
        }