Skip to content

Commit 139c29f

Browse files
committed
移除未使用的ParameterAttributeCollection类型
1 parent 7d2e9ab commit 139c29f

File tree

4 files changed

+32
-78
lines changed

4 files changed

+32
-78
lines changed

WebApiClient/Contexts/ApiActionDescriptor.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace WebApiClient.Contexts
88
/// 表示请求Api描述
99
/// </summary>
1010
[DebuggerDisplay("Name = {Name}")]
11-
public class ApiActionDescriptor
11+
public class ApiActionDescriptor
1212
{
1313
/// <summary>
1414
/// 获取Api名称
@@ -38,22 +38,36 @@ public class ApiActionDescriptor
3838
/// <summary>
3939
/// 获取Api的返回描述
4040
/// </summary>
41-
public ApiReturnDescriptor Return { get; internal set; }
41+
public ApiReturnDescriptor Return { get; internal set; }
4242

4343
/// <summary>
4444
/// 克隆
4545
/// </summary>
4646
/// <returns></returns>
4747
public ApiActionDescriptor Clone()
4848
{
49+
return this.Clone(null);
50+
}
51+
52+
/// <summary>
53+
/// 克隆并设置新的参数值
54+
/// </summary>
55+
/// <param name="parameterValues">新的参数值集合</param>
56+
/// <returns></returns>
57+
public ApiActionDescriptor Clone(object[] parameterValues)
58+
{
59+
var parameters = parameterValues == null ?
60+
this.Parameters.Select(p => p.Clone()).ToArray() :
61+
this.Parameters.Select((p, i) => p.Clone(parameterValues[i])).ToArray();
62+
4963
return new ApiActionDescriptor
5064
{
5165
Name = this.Name,
5266
Member = this.Member,
5367
Return = this.Return,
5468
Filters = this.Filters,
5569
Attributes = this.Attributes,
56-
Parameters = this.Parameters.Select(item => item.Clone()).ToArray()
70+
Parameters = parameters
5771
};
5872
}
5973
}

WebApiClient/Contexts/ApiParameterDescriptor.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,22 @@ public override string ToString()
6060
/// </summary>
6161
/// <returns></returns>
6262
public ApiParameterDescriptor Clone()
63+
{
64+
return this.Clone(this.Value);
65+
}
66+
67+
/// <summary>
68+
/// 克隆新设置新的值
69+
/// </summary>
70+
/// <param name="value">新的参数值</param>
71+
/// <returns></returns>
72+
public ApiParameterDescriptor Clone(object value)
6373
{
6474
return new ApiParameterDescriptor
6575
{
6676
Name = this.Name,
6777
Index = this.Index,
68-
Value = this.Value,
78+
Value = value,
6979
Member = this.Member,
7080
Attributes = this.Attributes,
7181
ParameterType = this.ParameterType,

WebApiClient/Defaults/ApiInterceptor.cs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,12 @@ public virtual object Intercept(object target, MethodInfo method, object[] param
5454
/// 获取api的描述
5555
/// </summary>
5656
/// <param name="method">接口的方法</param>
57-
/// <param name="parameters">参数集合</param>
57+
/// <param name="parameters">参数值集合</param>
5858
/// <returns></returns>
5959
protected virtual ApiActionDescriptor GetApiActionDescriptor(MethodInfo method, object[] parameters)
6060
{
61-
var actionDescripter = ApiDescriptorCache.GetApiActionDescriptor(method).Clone();
62-
for (var i = 0; i < actionDescripter.Parameters.Length; i++)
63-
{
64-
actionDescripter.Parameters[i].Value = parameters[i];
65-
}
66-
return actionDescripter;
61+
var descriptor = ApiDescriptorCache.GetApiActionDescriptor(method);
62+
return descriptor.Clone(parameters);
6763
}
6864

6965
/// <summary>

WebApiClient/Internal/ApiDescriptorCache.cs

Lines changed: 1 addition & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ static ApiDescriptorCache()
3333
/// </summary>
3434
/// <param name="method">接口的方法</param>
3535
/// <returns></returns>
36-
public static ApiActionDescriptor GetApiActionDescriptor(MethodInfo method)
36+
public static ApiActionDescriptor GetApiActionDescriptor(this MethodInfo method)
3737
{
3838
return cache.GetOrAdd(method, GetApiActionDescriptorNoCache);
3939
}
@@ -122,72 +122,6 @@ private static ApiReturnDescriptor GetReturnDescriptor(this MethodInfo method)
122122
return descriptor;
123123
}
124124

125-
/// <summary>
126-
/// 表示参数特性集合
127-
/// </summary>
128-
private class ParameterAttributeCollection
129-
{
130-
/// <summary>
131-
/// 特性列表
132-
/// </summary>
133-
private readonly List<IApiParameterAttribute> attribueList = new List<IApiParameterAttribute>();
134-
135-
/// <summary>
136-
/// 获取元素数量
137-
/// </summary>
138-
public int Count
139-
{
140-
get
141-
{
142-
return this.attribueList.Count;
143-
}
144-
}
145-
146-
/// <summary>
147-
/// 参数特性集合
148-
/// </summary>
149-
/// <param name="defined">声明的特性</param>
150-
public ParameterAttributeCollection(IEnumerable<IApiParameterAttribute> defined)
151-
{
152-
this.attribueList.AddRange(defined);
153-
}
154-
155-
/// <summary>
156-
/// 添加新特性
157-
/// </summary>
158-
/// <param name="attribute">新特性</param>
159-
public void Add(IApiParameterAttribute attribute)
160-
{
161-
this.attribueList.Add(attribute);
162-
}
163-
164-
/// <summary>
165-
/// 添加新特性
166-
/// </summary>
167-
/// <param name="attribute">新特性</param>
168-
/// <returns></returns>
169-
public bool AddIfNotExists(IApiParameterAttribute attribute)
170-
{
171-
var type = attribute.GetType();
172-
if (this.attribueList.Any(item => item.GetType() == type) == true)
173-
{
174-
return false;
175-
}
176-
177-
this.attribueList.Add(attribute);
178-
return true;
179-
}
180-
181-
/// <summary>
182-
/// 转换为数组
183-
/// </summary>
184-
/// <returns></returns>
185-
public IApiParameterAttribute[] ToArray()
186-
{
187-
return this.attribueList.ToArray();
188-
}
189-
}
190-
191125
/// <summary>
192126
/// 是否允许重复的特性比较器
193127
/// </summary>

0 commit comments

Comments
 (0)