2017-08-07 122 views
-4

我需要一个像枚举一样工作的解决方案,但有可能添加和删除元素。 我们有一个基础解决方案,它应该提供一些默认值,这对所有项目都很常见,但所有项目(扩展基础)也应该能够添加和删除它们自己的项目。替代枚举C#

例子:

基地产品:

public static class Constants 
{ 
    public enum Food 
    { 
     Carrot, 
     Meat, 
     Cheese 
    } 
} 

项目延期:

public static class ProjectConstants 
{ 
    // Remove meat from Food 
    // Add Fish to Food 
} 

所以现在我正在考虑只使用一个列表:

public static List<string> Food = new List<string>(new string[] 
    { 
     "Carrot", 
     "Meat", 
     "Cheese", 
    }); 

这允许我添加和删除项目中的元素。然而,字符串列表感觉更vunerable由于区分大小写和拼写错误,而且,我再错过机会使用:

if (Meat < Carrot) 

请问有什么好的解决办法吗?有人将强大而强大的枚举方式与添加和删除元素的通用方法结合起来?

+2

无论如何,肉类<胡萝卜的结果是什么? – EpicKip

+1

使用肉<胡萝卜是可怕的...呃。肯定是'肉>胡萝卜'? – DavidG

+0

在从集合中删除此值后,使用'Food.Meat'的代码会发生什么情况? –

回答

-2

这可能会帮助你Dynamic enum in C#
因为您丢失了编译时间检查,所以字典选项被排除在外。

编辑: 将链接更改为固定链接。

+1

虽然这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/16958903) –