c# - 是否可以在 C# 中使用基于键/值对的键的值类型?

标签 c# dictionary enums

举个简单的例子来更好的理解问题

图书馆拥有:

enum Keys
{
    [Description("Color select")]
    ColorSelection,

    [Description("Day select")]
    DaySelection,

    [Description("Gender select")]
    GenderSelection
}


enum Color
{
    [Description("White color")]
    White,

    [Description("Black color")]
    Black,

    [Description("Brown color")]
    Brown
}
enum Day
{
    [Description("Monday")]
    Monday,

    [Description("Tueday")]
    Tuesday,

    [Description("Wednesday")]
    Wednesday
}

enum Gender
{
    [Description("Male gender")]
    Male,

    [Description("Female gender")]
    Female            
}

我想要这样的客户:

Dictionary<Keys, ??> values = new Dictionary<Keys, ??>();

values.Add(Keys.ColorSelection, <Auto suggest color>);
values.Add(Keys.DaySelection, <Auto suggest day>); 

我可以修改库以包含 values 的列表作为Enum但是,我希望客户端使用基于键的过滤器自动建议值。

注意:
1. 我不希望具有属性的类(模型)作为各自的类型,因为库中有很多键可用,客户端会选择少数并提供值。
2. 我不能单独拥有值 List<Values>因为某些情况下会有相同的 description作为具有不同键的值.. 例如:“是/否值将与不同的键相同”

有什么建议吗?提前致谢..

最佳答案

您可以将字典声明为:

var dictionary = new Dictionary<Keys, int>();

然后使用一个方法将其封装在您自己的自定义类中,该方法使用键的 Keys 值来使用相应的枚举解释值。

虽然这里的整个问题看起来像是代码味道。

关于c# - 是否可以在 C# 中使用基于键/值对的键的值类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45759139/

相关文章:

c# - 如何使用包含运行时值的委托(delegate)来初始化事件?

c# - icd9 正则表达式模式

c# - Enum.GetValues() 不会返回您(我)期望的内容

c - 在 C 中查找未使用的枚举成员

python - 从python中的复杂数据结构中提取数据

mysql - 如何使用查询获取枚举数据类型名称?

c# - Identity Server 4 - 未经授权的客户端

c# - 通过字符串和 varchar(max) 之间的比较来更新查询

python - 将列表放入字典中

c++ - 迭代器不会在C++中打印所有 map