public async Task InvokeAsync(Expression <Action <TInterface> > exp)
        {
            IpcRequest  request  = GetRequest(exp, new MyInterceptor());
            IpcResponse response = await GetResponseAsync(request);

            if (response.Succeed)
            {
                return;
            }
            else
            {
                throw new InvalidOperationException(response.Failure);
            }
        }
        public async Task <TResult> InvokeAsync <TResult>(Expression <Func <TInterface, TResult> > exp)
        {
            IpcRequest  request  = GetRequest(exp, new MyInterceptor <TResult>());
            IpcResponse response = await GetResponseAsync(request);

            if (response.Succeed)
            {
                if (_converter.TryConvert(response.Data, typeof(TResult), out object @return))
                {
                    return((TResult)@return);
                }
                else
                {
                    throw new InvalidOperationException($"Unable to convert returned value to '{typeof(TResult).Name}'.");
                }
            }
            else
            {
                throw new InvalidOperationException(response.Failure);
            }
        }
 public byte[] SerializeResponse(IpcResponse response)
 {
     return(Serialize(response));
 }