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 に答える