//public override object Invoke(Type returnType, string methodName, IEnumerable<object> arguments, string[] genericArguments,
        //    CancellationToken cancellationToken = default) {

        //    var methodInfo = typeof(ClientProxyCreatorHelper).GetMethods()
        //        .WithName(nameof(Invoke)).First(p => p.HasGenericArgumentsLengthOf(1));
        //    var generic = methodInfo.MakeGenericMethod(returnType);

        //    var parameters = new object[] {methodName, arguments, genericArguments, cancellationToken};
        //    var res = generic.Invoke(this, parameters);
        //    //var res = InvokeHelper.InvokeMethod<object>(this, generic, parameters);
        //    return res;

        //}

        //public override async Task<object> InvokeAsync(Type returnType, string methodName, IEnumerable<object> arguments, string[] genericArguments,
        //    CancellationToken cancellationToken = default) {
        //    var methodInfo = typeof(ClientProxyCreatorHelper).GetMethods()
        //        .WithName(nameof(InvokeAsync)).First(p => p.HasGenericArgumentsLengthOf(1));
        //    var generic = methodInfo.MakeGenericMethod(returnType);

        //    var parameters = new object[] {methodName, arguments, genericArguments, cancellationToken};
        //    //var res = generic.Invoke(this, parameters);
        //    var res = await InvokeHelper.InvokeMethodAsync(this, generic, parameters);
        //    return res;
        //}

        public override void Send(string methodName, IEnumerable <object> arguments, string[] genericArguments, CancellationToken cancellationToken = default)
        {
            var msg = new ClientRequestMessage(methodName, arguments);

            msg.GenericArguments = genericArguments.ToArray();
            SimpleAsyncHelper.RunSync(() => _harrrConnection.SendCoreAsync(msg, cancellationToken));
        }
Esempio n. 2
0
        //public override object Invoke(Type returnType, string methodName, IEnumerable<object> arguments, string[] genericArguments, CancellationToken cancellationToken = default) {
        //    var methodInfo = typeof(ServerProxyCreatorHelper).GetMethods()
        //        .WithName(nameof(InvokeAsync)).First(p => p.HasGenericArgumentsLengthOf(1));
        //    var generic = methodInfo.MakeGenericMethod(returnType);

        //    var parameters = new object[] {methodName, arguments, genericArguments, cancellationToken};
        //    return InvokeHelper.InvokeMethod(this, generic, new List<Type>() {returnType}, parameters);
        //}

        public override T Invoke <T>(string methodName, IEnumerable <object> arguments, string[] genericArguments, CancellationToken cancellationToken = default)
        {
            return(SimpleAsyncHelper.RunSync(() => InvokeAsync <T>(methodName, arguments, genericArguments, cancellationToken)));
        }