Tengo una clase que mapea objetos a objetos, pero a diferencia del diccionario, los mapea en ambos sentidos. Ahora estoy tratando de implementar una interfaz personalizada de IEnumerator que recorre los valores.¿Cómo implementaría la interfaz IEnumerator?
public class Mapper<K,T> : IEnumerable<T>, IEnumerator<T>
{
C5.TreeDictionary<K,T> KToTMap = new TreeDictionary<K,T>();
C5.HashDictionary<T,K> TToKMap = new HashDictionary<T,K>();
public void Add(K key, T value)
{
KToTMap.Add(key, value);
TToKMap.Add(value, key);
}
public int Count
{
get { return KToTMap.Count; }
}
public K this[T obj]
{
get
{
return TToKMap[obj];
}
}
public T this[K obj]
{
get
{
return KToTMap[obj];
}
}
public IEnumerator<T> GetEnumerator()
{
return KToTMap.Values.GetEnumerator();
}
public T Current
{
get { throw new NotImplementedException(); }
}
public void Dispose()
{
throw new NotImplementedException();
}
object System.Collections.IEnumerator.Current
{
get { throw new NotImplementedException(); }
}
public bool MoveNext()
{
;
}
public void Reset()
{
throw new NotImplementedException();
}
}
Así lo hice al principio, pero más tarde me di cuenta de que me gustaría utilizar para cada uno de estos objetos para obtener los valores. –
para usar foreach en un objeto, el único requisito es que tenga un método publi GetEnumerator() que devuelve e IEnumerator, el objeto ni siquiera tiene que implementar ninguna interfaz, pero se recomienda que implemente IEnumerable o IEnumerable, puedes adivinar por qué;) –
Eso es lo que pensé, así que mi error está en otra parte. Gracias por tranquilizarme –