Enum→int 通用铸造在包装系列中



在我的情况下,我需要将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<KeyValuePair<System.Enum, string>>也不起作用。

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

最新更新