Je mets en œuvre IListSource
qui nécessite une méthode GetList()
avec la signature suivante :
IList GetList()
J'utilise .NET framework 2 et je veux retourner un objet qui implémente IList comme suit :
public System.Collections.IList GetList()
{
return this._mydata; // Implements IList<MyDataRow>
}
Mais je reçois une erreur de compilation disant : Cannot implicitly convert type MyData to System.Collections.IList
.
Si je crée un nouveau liste de type List<MyDataRow>
le remplit et renvoie cet objet liste, et cela fonctionne. En d'autres termes, cela fonctionne :
public System.Collections.IList GetList()
{
List<MyDataRow> list = new List<MyDataRow>();
foreach (MyDataRow row in this._mydata)
{
list.Add(row);
}
return list;
}
Mais il semble très inefficace de devoir recréer la liste juste pour l'obtenir à partir du type IList<T>
a IList
. Comment se fait-il que je puisse renvoyer un List<MyDataRow>' from 'GetList()
mais pas un IList<MyDataRow>
? Quelqu'un connaît-il un moyen pour moi de renvoyer la IList<MyDataRow>
sans recréer une nouvelle liste ?
UPDATE :
En _mydata
est déclarée :
private MyData _mydata;
Et MyData
est déclarée :
public class MyData : IList<MyDataRow>
{
....
}