Io sono l'attuazione IListSource
che richiede un metodo GetList()
con la seguente firma:convertire da IList <T> a non generica IList
IList GetList()
Sto usando .NET Framework 2 e sto volendo restituire un oggetto che implementa IList come segue:
public System.Collections.IList GetList()
{
return this._mydata; // Implements IList<MyDataRow>
}
Ma ottengo un errore di compilazione dicendo: Cannot implicitly convert type MyData to System.Collections.IList
.
Se creo un elenco nuovo di tipo List<MyDataRow>
, lo compilo e restituisco questo oggetto elenco, quindi funziona. Quindi, in altre parole, questo funziona:
public System.Collections.IList GetList()
{
List<MyDataRow> list = new List<MyDataRow>();
foreach (MyDataRow row in this._mydata)
{
list.Add(row);
}
return list;
}
Ma sembra molto inefficiente di dover ricreare la lista solo per ottenere da tipo IList<T>
-IList
. Perché posso restituire un List<MyDataRow>' from 'GetList()
, ma non uno IList<MyDataRow>
? Qualcuno sa di un modo per me di restituire il IList<MyDataRow>
senza ripopolare un nuovo elenco?
UPDATE:
La variabile _mydata
membro è dichiarato:
private MyData _mydata;
E MyData
viene dichiarata:
public class MyData : IList<MyDataRow>
{
....
}
Qual è il tipo dichiarato della _mydata' campo ' ? –
@NicoleCalinoiu: Secondo il messaggio di errore che ottiene, è 'MyData'. – Heinzi