//No params but have default private void RegisterNParamsDefaultMethod(int indent, StringBuilder sb, int startIndex, bool ingoreLast = false) { string indentStr = CSToLuaRegisterHelper.GetIndent(indent); List <string> values = new List <string>(); for (int i = 0; i < parDefaultStartIndex; i++) { sb.Append(CSToLuaRegisterHelper.GetToAction(indent, parTypes[i], startIndex + i, "v" + i)); if (parRefIndex.IndexOf(i) >= 0) { values.Add("ref v" + i); } else if (parOutIndex.IndexOf(i) >= 0) { values.Add("out v" + i); } else { values.Add("v" + i); } } for (int i = parDefaultStartIndex; i < parTypes.Count; i++) { string typeName = CSToLuaRegisterHelper.GetTypeFullName(parTypes[i]); object defValue = methodInfo.GetParameters()[i].DefaultValue; string defStr = CSToLuaRegisterHelper.GetDefaultValue(defValue, parTypes[i]); sb.AppendLine(string.Format("{0}{1} v" + i + " = {2};", indentStr, typeName, defStr)); } if (methodInfo.ReturnType != typeof(void)) { sb.AppendLine(string.Format("{0}{1} rv = {2};", indentStr, CSToLuaRegisterHelper.GetTypeFullName(methodInfo.ReturnType), CSToLuaRegisterHelper.GetDefaultValue(methodInfo.ReturnType))); } for (int i = 0; i < (ingoreLast ? parTypes.Count - parDefaultStartIndex : parTypes.Count - parDefaultStartIndex + 1); i++) { sb.AppendLine(string.Format("{0}if(top == {1}){{", indentStr, startIndex + parDefaultStartIndex + i - 1)); indent++; indentStr = CSToLuaRegisterHelper.GetIndent(indent); List <string> newValues = new List <string>(); newValues.AddRange(values); for (int j = 0; j < i; j++) { sb.Append(CSToLuaRegisterHelper.GetToActionWithNoType(indent, parTypes[parDefaultStartIndex + j], startIndex + parDefaultStartIndex + j, "v" + (parDefaultStartIndex + j))); newValues.Add("v" + (parDefaultStartIndex + j)); } if (methodInfo.ReturnType == typeof(void)) { if (methodInfo.IsStatic) { sb.AppendLine(string.Format("{0}{1}.{2}({3});", indentStr, classRegister.RegisterType, methodInfo.Name, string.Join(",", newValues.ToArray()))); } else { sb.AppendLine(string.Format("{0}obj.{1}({2});", indentStr, methodInfo.Name, string.Join(",", newValues.ToArray()))); } } else { if (methodInfo.IsStatic) { sb.AppendLine(string.Format("{0}rv = {1}.{2}({3});", indentStr, classRegister.RegisterType, methodInfo.Name, string.Join(",", newValues.ToArray()))); } else { sb.AppendLine(string.Format("{0}rv = obj.{1}({2});", indentStr, methodInfo.Name, string.Join(",", newValues.ToArray()))); } } indent--; indentStr = CSToLuaRegisterHelper.GetIndent(indent); sb.AppendLine(string.Format("{0}}}", indentStr)); } }