feat: 稳健性提升

现在会校验枚举名是否合法并转换为PascalCase
This commit is contained in:
2026-05-19 14:12:40 +08:00
parent 79e6cd2a53
commit 20b0f65e6a
+44 -5
View File
@@ -1,11 +1,16 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Linq;
namespace ExcelTool.Parser namespace ExcelTool.Parser
{ {
public class ParsedEnumMember public class ParsedEnumMember
{ {
/// <summary>成员名,如 "Home"</summary> public string Key
public string Key { get; set; } {
get;
set { field = ParsedEnum.NormalizeIdentifier(value); }
}
/// <summary>显式值,为 null 时代码生成时自动递增(不写值)</summary> /// <summary>显式值,为 null 时代码生成时自动递增(不写值)</summary>
public int? Value { get; set; } public int? Value { get; set; }
@@ -19,9 +24,43 @@ namespace ExcelTool.Parser
/// <summary>A 列 Id,供外部系统通过 EnumIds 常量类引用</summary> /// <summary>A 列 Id,供外部系统通过 EnumIds 常量类引用</summary>
public uint Id { get; set; } public uint Id { get; set; }
/// <summary>枚举类型名,如 "GameState"</summary> public string EnumName
public string EnumName { get; set; } {
get;
set
{
field = NormalizeIdentifier(value);
}
}
public List<ParsedEnumMember> Members { get; set; } = new(); public static string NormalizeIdentifier(string input)
{
if (string.IsNullOrWhiteSpace(input))
{
return string.Empty;
}
string[] parts = Regex.Split(input, @"[\s_-]+")
.Where(s => !string.IsNullOrWhiteSpace(s))
.ToArray();
for (int i = 0; i < parts.Length; i++)
{
string part = parts[i];
if (part.Length == 1)
{
parts[i] = char.ToUpperInvariant(part[0]).ToString();
}
else
{
parts[i] = char.ToUpperInvariant(part[0]) + part.Substring(1);
}
}
return string.Concat(parts);
}
public List<ParsedEnumMember> Members { get; set; } = [];
} }
} }