Re[4]: Наследование и переопределение методов - где ошибка?
От: NovaCxarmulo Россия http://timofey.koolin.ru
Дата: 27.05.09 18:27
Оценка:
Здравствуйте, J-Pro, Вы писали:

JP>Здравствуйте, NovaCxarmulo, Вы писали:


NC>>>
NC>>>public class CarManager : ICarManager
NC>>>{
NC>>>  Car getAll(){return null;}
NC>>>  IThing IThingManager.getAll() {return getAll();/*Тут будет вызываться getAll который определен без принадлежности к интерфейсам*/}
NC>>>  ...
NC>>>}
NC>>>


NC>>
NC>>public class CarManager : ICarManager
NC>>{
NC>>  public Car getAll(){return null;}
NC>>  IThing IThingManager.getAll() {return getAll();/*Тут будет вызываться getAll который еделен без принадлежности к интерфейсам*/}
NC>>  ...
NC>>}
NC>>


JP>Только что попробовал. Результат: "Cannot implicitly convert type 'System.Collections.Generic.List<Car>' to 'System.Collections.Generic.List<IThing>'... Мне нужен именно список...


Угу, мне тоже не нравится что возврат унаследованных типов не принимается как реализация интерфейса, хотя непонятно почему.

Список нужно возвращать того типа, который требуется, т.е.
List<Car> cars = getAll();
List<IThing> res = new List<IThing>(car.Length);
for(int i = 0; i < cars.Length; ++i)
  res[i] = cars[i];


или что-то подобное.
Сражение выигрывает тот, кто твердо решил его выиграть
(с) Л.Н. Толстой
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.