我想要将泛型IDictionary的实例转换为非泛型IDictionary。我可以在不创建新的IDictionary实例的情况下这样做吗?是否有框架支持此任务?
我尝试在实现非遗传IDictionary的类中包装泛型IDictionary,但是我发现我还必须以某种方式将泛型ICollection转换为非泛型ICollection,所以我选择了Mark Gravell解决方案。
发布于 2008-09-29 08:16:30
这完全取决于您正在使用的具体实现。
例如,Dictionary既实现了通用的IDictionary,也实现了非通用的IDictionary -因此,如果您有一个Dictionary,您可以将其作为任何一个使用,而不会出现问题:
Dictionary<int, string> lookup = new Dictionary<int,string>();
IDictionary<int,string> typed = lookup;
IDictionary untyped = lookup;然而,这并不一定适用于所有的IDictionary实现,因为IDictionary:IDictionary并不是真的。如果您深入了解某些泛型代码,可以测试当前的字典:
IDictionary<int,string> typed = ...
IDictionary untyped = typed as IDictionary;
if(untyped == null) {/* create by enumeration */}https://stackoverflow.com/questions/147875
复制相似问题