.NET Core静态Guid常量初始化报错求助
解决Guid格式引发的TypeInitializationException错误
问题现象
在Core项目数据预处理环节触发错误:
System.TypeInitializationException:“ERP.Core.Constants.CoreDefaultValues的类型初始值设定项引发异常”
底层异常:FormatException:Guid应包含32位数字加4个短横线(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。
数据种子代码引用CoreDefaultValues类的Guid常量,尝试将Guid转为"D"格式重新实例化后问题仍未解决。相关代码如下:
数据种子代码
builder.HasData(new CashFlowItem { Id = CoreDefaultValues.DefaultExpenseCashFlowItemId, Name = "Income", Description = "Income", BelongTo = BelongTo.OperatingActivity, ReferenceType = ReferenceType.CatalogCashFlowItem }, new CashFlowItem { Id = CoreDefaultValues.DefaultExpenseCashFlowItemId, Name = "Expense", Description = "Expense", BelongTo = BelongTo.OperatingActivity, ReferenceType = ReferenceType.CatalogCashFlowItem });
CoreDefaultValues类代码(示例)
public static class CoreDefaultValues{ public static Guid DefaultIncomeCashFlowItemId = new("a0ce69fc-dac3-4d05-8084-82edb1478be6"); public static Guid DefaultExpenseCashFlowItemId = new("CA32B849-C4FA-476D-AC29-D6EFE2848F74"); }
问题根源
CoreDefaultValues完整类中部分Guid字符串存在空格、多余符号等格式问题,不符合Guid的标准格式要求,导致类在初始化时触发FormatException,进而引发TypeInitializationException。
解决步骤
- 全面检查
CoreDefaultValues类中所有Guid字符串,确保每个字符串严格匹配xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx格式,彻底移除空格、换行、额外符号 - 验证Guid有效性:可使用
Guid.TryParse(guidString, out var validGuid)方法批量测试所有Guid字符串,替换无效项 - 无需转换为"D"格式:Guid构造函数本身支持标准带短横线的格式,格式转换无法解决根源的无效字符串问题
内容的提问来源于stack exchange,提问作者hans fridrech
相关产品推荐
相关产品推荐

