C # La conversión implícita a la lista retornos error de ejecución
-
26-09-2019 - |
Pregunta
Tengo una clase similar al siguiente que utiliza una lista interna:
public class MyList<T> : IEnumerable<T>
{
private List<T> _lstInternal;
public MyList()
{
_lstInternal = new List<T>();
}
public static implicit operator List<T>(MyList<T> toCast)
{
return toCast._lstInternal;
}
}
Cuando intento de pasar MyList<object>
a una función que toma un List<object>
, consigo un InvalidCastException. ¿Por qué?
Solución
Uso de la clase que ha descrito, el siguiente código que funcionó para mí:
static void Main(string[] args)
{
MyList<object> foo = new MyList<object>();
MyMethod(foo);
}
static void MyMethod(List<object> things)
{
// No InvalidCastException when called...
}
Lo único que ha cambiado desde la clase MyList<T>
informados en su pregunta fue la adición de la siguiente implementación de IEnumerable<T>
:
IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
return _lstInternal.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return _lstInternal.GetEnumerator();
}
No es muy seguro por qué recibe una excepción, salvo como he mencionado en mi comentario, estoy usando C # versión 4.0. Qué versión está usando?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow