2013-02-17 92 views
0
public class ExpiringDictionary<TKey, TValue> : IDictionary<TKey, TValue> { 
    private class ExpiringValueHolder<T> 
    { 
     public T Value { get; set; } 
     . 
     . 
     . 
    } 
    private IDictionary<TKey, ExpiringValueHolder<TValue>> innerDictionary; 

    public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator() 
    { 
     //throw new NotImplementedException(); 
     return (IEnumerator<KeyValuePair<TKey, TValue>>)innerDictionary.GetEnumerator(); 
    } 
} 

这里是代码给我铸造错误。有可能为函数GetEnumerator()转换返回值吗?C#类型铸造或转换

谢谢你的帮助。

回答

1

您的innerDictionary包含一个KeyValuePair<TKey, ExpiringValueholder<TValue>>的集合,所以不是您可以尝试的方式。

最简单的解决方案可能是做到以下几点:

return innerDictionary.Select(kvp => new KeyValuePair<TKey, TValue>(kvp.Key, kvp.Value.Value)) 
    .GetEnumerator() 

这将从ExpiringValueHolder<T>选择内Value

+0

这很酷。感谢您的快速响应和简单的解决方案.. – AstronBnX 2013-02-18 11:07:20