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() 转换返回值?

谢谢你的帮忙。

4

1 回答 1

1

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

最简单的解决方案可能是执行以下操作:

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

Value将从您的ExpiringValueHolder<T>.

于 2013-02-17T23:52:01.027 回答