Closed Chuangludeng closed 1 year ago
原代码:
protected bool IsParameterMatch(IProxyMethodInfo proxyMethodInfo, Type[] parameterTypes) { ParameterInfo[] parameters = proxyMethodInfo.Parameters; if ((parameters == null || parameters.Length == 0) && (parameterTypes == null || parameterTypes.Length == 0)) return true; if (parameters != null && parameterTypes != null && parameters.Length == parameters.Length) { for (int i = 0; i < parameters.Length; i++) { if (!parameters[i].Equals(parameterTypes[i])) return false; } return true; } return false; }
这里parameters[i]类型和parameterTypes类型不同,Equals会永远不等,所以这里一直会往list里面添加,在运行了1个小时后变得非常巨大.同时上面parameters.Length == parameters.Length应该也是笔误了 修正后:
protected bool IsParameterMatch(IProxyMethodInfo proxyMethodInfo, Type[] parameterTypes) { ParameterInfo[] parameters = proxyMethodInfo.Parameters; if ((parameters == null || parameters.Length == 0) && (parameterTypes == null || parameterTypes.Length == 0)) return true; if (parameters != null && parameterTypes != null && parameters.Length == parameterTypes.Length) { for (int i = 0; i < parameters.Length; i++) { if (parameters[i].ParameterType != parameterTypes[i]) return false; } return true; } return false; }
好的,谢谢,我抽个时间测试一下!
已经修改了,等会合并一些新功能,发布一个新版本。谢谢
原代码:
这里parameters[i]类型和parameterTypes类型不同,Equals会永远不等,所以这里一直会往list里面添加,在运行了1个小时后变得非常巨大.同时上面parameters.Length == parameters.Length应该也是笔误了 修正后: