public virtual string Invoke <T, K>(MethodDescriptor method, string message) where T : class, IMessage <T> where K : class, IMessage <K>
        {
            var req = ArgsParser <T> .Parser.ParseJson(message);

            var _method = GrpcMethod <T, K> .GetMethod(method);

            return(CallInvoker.BlockingUnaryCall(_method, null, GetDefaultCallOptions(), req).ToString());
        }
        public virtual async Task <string> InvokeAsync <T, K>(MethodDescriptor methodDescript, string message, CallOptions callOptions, string host)
            where T : class, IMessage <T> where K : class, IMessage <K>
        {
            var request = ArgsParser <T> .Parser.ParseJson(message);

            var method = GrpcMethod <T, K> .GetMethod(methodDescript);

            K response = await CallInvoker.AsyncUnaryCall(method, host, callOptions, request);

            return(response.ToString());
        }
        public AsyncUnaryCall <K> InvokeAsync <T, K>(MethodDescriptor method, T request) where T : class, IMessage <T> where K : class, IMessage <K>
        {
            var _method = GrpcMethod <T, K> .GetMethod(method);

            return(CallInvoker.AsyncUnaryCall(_method, null, GetDefaultCallOptions(), request));
        }