From e821c8502cfc03bd518d8c90dbd7f1247a704968 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 24 Sep 2021 14:51:54 +0800 Subject: [PATCH] Solve the case of duplicate parameter types --- .../Http/Client/ClientProxying/ClientProxyBase.cs | 4 ++-- .../ClientProxying/ClientProxyRequestTypeValue.cs | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs index caaed6f3df..3da09a1d18 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs @@ -55,7 +55,7 @@ namespace Volo.Abp.Http.Client.ClientProxying arguments = new ClientProxyRequestTypeValue(); } - var methodUniqueName = $"{typeof(TService).FullName}.{methodName}.{string.Join("-", arguments.Select(x => x.Key.FullName))}"; + var methodUniqueName = $"{typeof(TService).FullName}.{methodName}.{string.Join("-", arguments.Values.Select(x => x.Key.FullName))}"; var action = ClientProxyApiDescriptionFinder.FindAction(methodUniqueName); if (action == null) { @@ -65,7 +65,7 @@ namespace Volo.Abp.Http.Client.ClientProxying action, action.Parameters .GroupBy(x => x.NameOnMethod) - .Select((x, i) => new KeyValuePair(x.Key, arguments.Values.Skip(i).FirstOrDefault())) + .Select((x, i) => new KeyValuePair(x.Key, arguments.Values.Skip(i).First().Value)) .ToDictionary(x => x.Key, x => x.Value), typeof(TService)); } diff --git a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyRequestTypeValue.cs b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyRequestTypeValue.cs index 7560a9971e..f412abac64 100644 --- a/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyRequestTypeValue.cs +++ b/framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyRequestTypeValue.cs @@ -3,8 +3,18 @@ using System.Collections.Generic; namespace Volo.Abp.Http.Client.ClientProxying { - public class ClientProxyRequestTypeValue : Dictionary + public class ClientProxyRequestTypeValue { + public List> Values { get; private set; } + public ClientProxyRequestTypeValue() + { + Values = new List>(); + } + + public void Add(Type type, object value) + { + Values.Add(new KeyValuePair(type, value)); + } } }