2013-02-17 80 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