C# ISO3166国家/地区的Enum-可接受的做法?

C# ISO3166国家/地区的Enum-可接受的做法?,c#,asp.net-mvc-3,enums,country-codes,C#,Asp.net Mvc 3,Enums,Country Codes,我正在开发一个ASP.NET MVC 3应用程序,它使用了一个复杂的模型,该模型被序列化/反序列化到XML中/从XML中序列化 某些字段需要ISO3166国家/地区代码。我为其他受限列表(不太可能更改)定义了几个枚举,这些列表用XmlEnum属性标记,并使用displayFor/EditorFor模板整齐地显示 为了保持一致,我创建了一个ISO3166国家代码的枚举 然而,我知道这些将随着时间的推移而改变,需要我重新构建/部署项目 考虑到ISO3166代码更改的频率/可能性,这种做法可以接受吗?

我正在开发一个ASP.NET MVC 3应用程序,它使用了一个复杂的模型,该模型被序列化/反序列化到XML中/从XML中序列化

某些字段需要ISO3166国家/地区代码。我为其他受限列表(不太可能更改)定义了几个枚举,这些列表用XmlEnum属性标记,并使用displayFor/EditorFor模板整齐地显示

为了保持一致,我创建了一个ISO3166国家代码的枚举

然而,我知道这些将随着时间的推移而改变,需要我重新构建/部署项目


考虑到ISO3166代码更改的频率/可能性,这种做法可以接受吗?

枚举在概念上是一个相关的常量集合,即它们不会更改-客户端程序集可以做出这种假设,并直接在枚举字段的值中编译


但ISO 3166确实发生了变化。例如,新国家南苏丹的创建需要在更新中反映出来。

这不只是配置数据吗?我会用XML序列化国家代码的
列表
,并将其放在
CountryCodes.XML
文件中的
App\u Data
文件夹中。

将其放在数据库中不会给您带来更大的灵活性吗?您的逻辑应该能够为您可以获得的代码列表提供它,枚举您将必须始终返回到代码change@V4Vendetta-为什么要将它们存储在数据库中?他们经常更改吗?@Oded你是对的,但我不知道这是否有风险,一次更改会如何影响应用程序,因为将其作为枚举将强制执行基于值而不是一般值的特定条件的代码。我同意将其作为配置文件。我不确定是否使用xml序列化,但这只是一个次要的实现细节。谢谢你的建议。我只考虑过使用数据库来存储国家代码,这样其他的方法就很有用了;南苏丹的例子说明了为什么枚举不是一个好的选择。