Я реализую 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>
{
....
}