Я реализую IListSource
, для которого требуется метод GetList()
со следующей сигнатурой:
IList GetList()
Я использую .NET framework 2, и я хочу вернуть объект, который реализует IList следующим образом:
public System.Collections.IList GetList()
{
return this._mydata; // Implements IList<MyDataRow>
}
Но я получаю ошибку компиляции: Cannot implicitly convert type MyData to System.Collections.IList
.
Если я создаю список новый типа List<MyDataRow>
, запомните его и верните этот объект списка, тогда он будет работать. Другими словами, это работает:
public System.Collections.IList GetList()
{
List<MyDataRow> list = new List<MyDataRow>();
foreach (MyDataRow row in this._mydata)
{
list.Add(row);
}
return list;
}
Но кажется очень неэффективным, чтобы воссоздать список, чтобы получить его от типа IList<T>
до IList
. Почему я могу вернуть List<MyDataRow>' from 'GetList()
, но не IList<MyDataRow>
? Кто-нибудь знает, как мне вернуть IList<MyDataRow>
без повторного заполнения нового списка?
UPDATE:
Объявлена членская переменная _mydata
:
private MyData _mydata;
И MyData
объявлен:
public class MyData : IList<MyDataRow>
{
....
}