static void WriteMethods(StreamWriter writer, IEnumerable <MethodInfo> methods, GenMethodType methodType) { bool wroteHead = false; foreach (var item in methods) { var methodName = item.Name; if (methodName.StartsWith("get_") || methodName.StartsWith("set_")) { continue; } if (item.IsGenericMethod && !isSupportedGenericMethod(item)) { continue; } if (methodType == GenMethodType.Extension) { if (!wroteHead) { writer.WriteLine(); writer.WriteLine("---extension methods"); wroteHead = true; } } var paramArray = item.GetParameters(); for (int i = 0, iMax = paramArray.Length; i < iMax; i++) { if (i == 0 && methodType == GenMethodType.Extension) { continue; } var param = paramArray[i]; writer.Write("---@param "); writer.Write(param.Name); writer.Write(' '); writer.Write(GetTypeTagName(param.ParameterType)); if ((param.Attributes & ParameterAttributes.HasDefault) == ParameterAttributes.HasDefault) { writer.Write(" @default_value:"); writer.WriteLine(param.DefaultValue); } else if (param.IsOut) { writer.WriteLine(" @out"); } else if (param.IsIn) { writer.WriteLine(" @in"); } else { writer.WriteLine(); } } if (item.ReturnType != typeof(void)) { writer.Write("---@return "); writer.WriteLine(GetTypeTagName(item.ReturnType)); } writer.Write("function m"); writer.Write(methodType == GenMethodType.Static ? "." : ":"); writer.Write(item.Name); writer.Write("("); for (int i = 0, iMax = paramArray.Length; i < iMax; i++) { if (i == 0 && methodType == GenMethodType.Extension) { continue; } writer.Write(paramArray[i].Name); if (i < iMax - 1) { writer.Write(", "); } } writer.WriteLine(") end"); } }
//单写一个函数,可以用其他类中的函数写到当前类中 private static void WriteMethods(StreamWriter writer, MethodInfo item, GenMethodType methodType = GenMethodType.Instance) { var methodName = item.Name; if (methodName.StartsWith("get_") || methodName.StartsWith("set_")) { return; } if (item.IsGenericMethod && !isSupportedGenericMethod(item)) { return; } var paramArray = item.GetParameters(); for (int i = 0, iMax = paramArray.Length; i < iMax; i++) { var param = paramArray[i]; var paramName = param.Name; paramName = GetNewParamName(paramName); writer.Write("---@param "); writer.Write(paramName); writer.Write(' '); writer.Write(param.ParameterType.GetTypeTagName()); if ((param.Attributes & ParameterAttributes.HasDefault) == ParameterAttributes.HasDefault) { writer.Write(" @default_value:"); writer.WriteLine(param.DefaultValue); } else if (param.IsOut) { writer.WriteLine(" @out"); } else if (param.IsIn) { writer.WriteLine(" @in"); } else { writer.WriteLine(); } } if (item.ReturnType != typeof(void)) { writer.Write("---@return "); writer.WriteLine(item.ReturnType.GetTypeTagName()); } writer.Write("function m"); writer.Write(methodType == GenMethodType.Static ? "." : ":"); writer.Write(item.Name); writer.Write("("); for (int i = 0, iMax = paramArray.Length; i < iMax; i++) { string paramName = paramArray[i].Name; paramName = GetNewParamName(paramName); writer.Write(paramName); if (i < iMax - 1) { writer.Write(", "); } } writer.WriteLine(") end"); }