Me estoy poniendo en práctica IListSource
que requiere un método GetList()
con la siguiente firma:Convertir de IList <T> a no genérica IList
IList GetList()
estoy usando NET Framework 2 y estoy con ganas de volver un objeto que implementa IList de la siguiente manera:
public System.Collections.IList GetList()
{
return this._mydata; // Implements IList<MyDataRow>
}
pero me da un error de compilación diciendo: Cannot implicitly convert type MyData to System.Collections.IList
.
Si creo un nuevo lista del tipo List<MyDataRow>
, pueble y devuelva este objeto de lista, entonces funciona. En otras palabras, esto funciona:
public System.Collections.IList GetList()
{
List<MyDataRow> list = new List<MyDataRow>();
foreach (MyDataRow row in this._mydata)
{
list.Add(row);
}
return list;
}
Pero parece muy ineficiente a tener que volver a crear la lista sólo para obtener de tipo IList<T>
a IList
. ¿Por qué es que puedo devolver un List<MyDataRow>' from 'GetList()
, pero no un IList<MyDataRow>
? ¿Alguien sabe de alguna manera para devolver el IList<MyDataRow>
sin volver a llenar una nueva lista?
ACTUALIZACIÓN:
La variable _mydata
miembro se ha declarado:
private MyData _mydata;
Y MyData
se declara:
public class MyData : IList<MyDataRow>
{
....
}
¿Cuál es el tipo declarado del campo '_mydata' ? –
@NicoleCalinoiu: Según el mensaje de error que recibe, es 'MyData'. – Heinzi