From c5f3c69b3a008ab87542e523e2a59f37801bd65a Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 18 Jan 2020 00:50:31 +0800 Subject: ... --- .../ErrorResponseCodeGenerator.csproj | 12 +++++ ErrorResponseCodeGenerator/Program.cs | 62 ++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 ErrorResponseCodeGenerator/ErrorResponseCodeGenerator.csproj create mode 100644 ErrorResponseCodeGenerator/Program.cs (limited to 'ErrorResponseCodeGenerator') diff --git a/ErrorResponseCodeGenerator/ErrorResponseCodeGenerator.csproj b/ErrorResponseCodeGenerator/ErrorResponseCodeGenerator.csproj new file mode 100644 index 00000000..e77a1ba3 --- /dev/null +++ b/ErrorResponseCodeGenerator/ErrorResponseCodeGenerator.csproj @@ -0,0 +1,12 @@ + + + + Exe + netcoreapp3.1 + + + + + + + diff --git a/ErrorResponseCodeGenerator/Program.cs b/ErrorResponseCodeGenerator/Program.cs new file mode 100644 index 00000000..cf021927 --- /dev/null +++ b/ErrorResponseCodeGenerator/Program.cs @@ -0,0 +1,62 @@ +using System; +using System.Linq; +using System.Reflection; + +namespace ErrorResponseCodeGenerator +{ + class Program + { + static void Main(string[] args) + { + var code = ""; + + void RecursiveAddErrorCode(Type type, bool root) + { + code += $@" + public static class {(root ? "ErrorResponse" : type.Name)} + {{ +"; + + foreach (var field in type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy) + .Where(fi => fi.IsLiteral && !fi.IsInitOnly && fi.FieldType == typeof(int))) + { + var path = type.FullName.Replace("+", ".").Replace("Timeline.Models.Http.ErrorCodes.", "") + "." + field.Name; + + code += $@" + public static CommonResponse {field.Name}(params object?[] formatArgs) + {{ + return new CommonResponse({"ErrorCodes." + path}, string.Format({path.Replace(".", "_")}, formatArgs)); + }} + + public static CommonResponse CustomMessage_{field.Name}(string message, params object?[] formatArgs) + {{ + return new CommonResponse({"ErrorCodes." + path}, string.Format(message, formatArgs)); + }} +"; + } + + foreach (var nestedType in type.GetNestedTypes()) + { + RecursiveAddErrorCode(nestedType, false); + } + + code += @" + } +"; + } + + RecursiveAddErrorCode(typeof(Timeline.Models.Http.ErrorCodes), true); + + code = @" +using static Timeline.Resources.Messages; + +namespace Timeline.Models.Http +{ +$ +} +".Replace("$", code); + + Console.WriteLine(code); + } + } +} -- cgit v1.2.3