Buenas, leyendo la documentación de la interfaz IEnumerable me encuentro con que en el código de ejemplo se hace esto:
// Implementation for the GetEnumerator method.
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator) GetEnumerator();
}
public PeopleEnum GetEnumerator()
{
return new PeopleEnum(_people);
}
Entiendo básicamente los usos de la implementación explicita de una interfaz (múltiples interfaces con el mismo nombre de método, ocultamiento de métodos, etc), lo que no comprendo es con qué fin se hace una EII si dentro de ésta se llama al método implícito, como lo veo diría que es redundante. He encontrado unas líneas parecidas en el libro Pro ASP.NET MVC 5.
namespace LanguageFeatures.Models {
public class ShoppingCart : IEnumerable<Product> {
public List<Product> Products { get; set; }
public IEnumerator<Product> GetEnumerator() {
return Products.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();
}
}
}
No sé si sea algo propio del uso en conjunto de estas interfaces, pero no he podido encontrar más ejemplos. Tal vez sea solo una práctica o me estoy saltando algo.
¡Gracias!