【问题标题】:Enum→int universal cast in packed collectionsEnum→int 打包集合中的通用转换
【发布时间】:2018-09-13 18:28:26
【问题描述】:

在我的情况下,我需要将Dictionary<SomeEnum, string> 类型的字典对象存储在object 变量中。 SomeEnum 始终是不同的类型,基础类型是 int。另一方面,我需要将对象转换为IDictionary<int, string>,但经过两天的思考,没有任何效果。 让我举一个例子:

enum Things: int {A, B, C}
//few lines are skipped
IDictionary<Things, string> dict = new Dictionary<Things, string>(){
{Things.A, "A"},
{Things.B, "B"},
{Things.C, "C"}};
object a = dict;
var b = a as IDictionary<System.Enum, string>; //not working
var c = a as IDictionary<int, string>; //not working too
var d = a as IDictionary<object, string>; //at least we tried

我做错了什么?即使IDictionary&lt;KeyValuePair&lt;System.Enum, string&gt;&gt; 也不起作用。

【问题讨论】:

标签: c# enums casting packing


【解决方案1】:

IDictionary 只有不变的类型参数。您确实必须通过复制所有内容来创建新字典。或者您创建一个包装器,可以查找转换为您的枚举的密钥。

【讨论】:

    猜你喜欢
    • 2017-08-25
    • 2010-10-04
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2020-05-18
    相关资源
    最近更新 更多