Skip to content

Commit 3c47aaf

Browse files
committed
update internal code
1 parent 6679753 commit 3c47aaf

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

FreeSql/Extensions/FreeSqlGlobalExtensions.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,27 @@ internal static string DisplayCsharp(this MethodInfo method, bool isOverride)
138138
.Append(string.Join(", ", genericParameters.Select(a => a.DisplayCsharp())))
139139
.Append('>');
140140

141-
sb.Append('(').Append(string.Join(", ", method.GetParameters().Select(a => $"{a.ParameterType.DisplayCsharp()} {a.Name}"))).Append(')');
141+
sb.Append("(").Append(string.Join(", ", method.GetParameters().Select(a => LocalDisplayCsharpParameter(a)))).Append(")");
142142
return sb.ToString();
143+
144+
string LocalDisplayCsharpParameter(ParameterInfo lp)
145+
{
146+
var pstr = "";
147+
object[] pattrs = new object[0];
148+
try { pattrs = lp.GetCustomAttributes(false); } catch { }
149+
if (pattrs.Any(a => a is ParamArrayAttribute)) pstr = "params ";
150+
pstr = $"{pstr}{lp.ParameterType.DisplayCsharp()} {lp.Name}";
151+
#if net40
152+
if (pattrs.Any(a => a is System.Runtime.InteropServices.OptionalAttribute) == false) return pstr;
153+
#else
154+
if (lp.HasDefaultValue == false) return pstr;
155+
#endif
156+
if (lp.DefaultValue == null) return $"{pstr} = null";
157+
if (lp.ParameterType == typeof(string)) return $"{pstr} = \"{lp.DefaultValue.ToString().Replace("\"", "\\\"").Replace("\r\n", "\\r\\n").Replace("\n", "\\n")}\"";
158+
if (lp.ParameterType == typeof(bool) || lp.ParameterType == typeof(bool?)) return $"{pstr} = {lp.DefaultValue.ToString().Replace("False", "false").Replace("True", "true")}";
159+
if (lp.ParameterType.IsEnum) return $"{pstr} = {lp.ParameterType.DisplayCsharp(false)}.{lp.DefaultValue}";
160+
return $"{pstr} = {lp.DefaultValue}";
161+
}
143162
}
144163
public static object CreateInstanceGetDefaultValue(this Type that)
145164
{

0 commit comments

Comments
 (0)