-1

我有这个结构包含在一个

public class Class1<TKey1> : IDictionary<TKey1, Class2>
{
    #region Private Fields
    private Dictionary<Key, Class2> _class2Manager = new Dictionary<Key, Class2>(new KeyEqualityComparer());
    #endregion

    #region Key
    protected internal struct Key
    {
        private TKey1 _TKeyValue1;

        public TKey1 TKeyValue
        {
            get { return _TKeyValue1; }
            set { _TKeyValue1 = value; }
        }
        public Key(TKey1 keyValue)
        {
            _TKeyValue1 = keyValue;
        }
        ///Other Key Code
    }
    #endregion
    ///Other Class1 Code
}

我正在尝试模拟(实现)我的_class2Manager字典的字典功能class1。当我想实现该GetEnumerator()方法时,问题就出现了。我不确定如何将IEnumerator<KeyValuePair<Key, Class2>> 返回的对象转换_class2Manager.GetEnumerator()IEnumerator<KeyValuePair<TKey1, Class2>>

IEnumerator<KeyValuePair<TKey1, Class2>> IEnumerable<KeyValuePair<TKey1, Class2>>.GetEnumerator()
{
    IEnumerator<KeyValuePair<Key, Class2>> K = _class2Manager.GetEnumerator();
}

我如何转换IEnumerator<KeyValuePair<Key, Class2>>IEnumerator<KeyValuePair<TKey1, Class2>>?

我已经考虑过cast,但我认为这不是我需要做的正确转换它的确切事情。

任何建议表示赞赏,谢谢。

4

2 回答 2

1

在您的GetEnumerator()功能代码中,您可以尝试:

foreach (KeyValuePair<Key, Class2>> entry in _MasterFrames)
    yield return new KeyValuePair<Key1, Class2>(entry.Key.TKeyValue, entry.Value);

基本上,这只会将每个字典中的每个条目转换Key为一个。Key1

于 2013-03-25T16:01:03.053 回答
0

当您想将一系列对象从一种类型映射到另一种类型时,您可以使用Select

return _class2Manager.Select(pair => 
        new KeyValuePair<Key1, Class2>(pair.Key.TKeyValue, pair.Value))
    .GetEnumerator();
于 2013-03-25T17:40:20.880 回答