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()生成返回值?
感谢您的帮助。
答案 0 :(得分:1)
您的innerDictionary
包含KeyValuePair<TKey, ExpiringValueholder<TValue>>
的集合,所以不是您目前正在尝试的方式。
最简单的解决方案可能是执行以下操作:
return innerDictionary.Select(kvp => new KeyValuePair<TKey, TValue>(kvp.Key, kvp.Value.Value))
.GetEnumerator()
这会从Value
中选择内部ExpiringValueHolder<T>
。