我的结构包含在
中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>>
?
我曾想过casting,但我认为这不是我需要做的正确转换它。
感谢任何建议,谢谢。
答案 0 :(得分:1)
在您的GetEnumerator()
功能代码中,您可以尝试:
foreach (KeyValuePair<Key, Class2>> entry in _MasterFrames)
yield return new KeyValuePair<Key1, Class2>(entry.Key.TKeyValue, entry.Value);
基本上,这只会为字典中的每个条目将每个Key
转换为Key1
。
答案 1 :(得分:0)
如果要将一系列对象从一种类型映射到另一种类型,可以使用Select
:
return _class2Manager.Select(pair =>
new KeyValuePair<Key1, Class2>(pair.Key.TKeyValue, pair.Value))
.GetEnumerator();