You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制代码库中所有枚举必须显式指定Int值?

强制枚举显式赋值的需求与实现方案

我需要强制代码库中的所有枚举都必须分配显式值。原因是很多枚举的Int值会被存储在数据库、文件或队列这类持久化介质中,如果在现有枚举值中间新增条目,会打乱后续值的顺序,引发严重的兼容性问题。

我考虑过几种实现方式:

  • 单元测试:不可行,因为反射API无法区分枚举值是隐式还是显式赋值的
  • Verify快照测试:通过反射把枚举值显式列在测试文件里,新增枚举或枚举值时测试会失败,直到手动批准变更。但这种方式略显繁琐
  • Roslyn分析器:可以给开发人员提供实时的代码检查反馈,是更理想的方案

反例(隐式赋值枚举)

public enum ImplictValuedEnum
{
    Zero,
    One,
    Two,
    Three
}

正例(显式赋值枚举)

public enum ExplictValuedEnum
{
    Zero = 0,
    One = 1,
    Two = 2,
    Three = 3
}

内容的提问来源于stack exchange,提问作者Will D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 03:47:37