Как правильно вернуть тип списка интерфейсов?

В следующем коде я получаю ошибку компиляции «невозможно неявно привести» к «возвращаемым книгам»; линия.

Я думал, что, поскольку я возвращаю список объектов книги, реализующих IPublication, это должно работать нормально?

public interface IPublication {}

public class Book : IPublication {}

public List<IPublication> GetBooks()
{
    List<Book> books = new List<Book>();
    return books;
}

Я заметил, что если я верну одну книгу как один объект IPublication, она будет работать нормально. Представление List <> требует явного приведения.

В качестве обходного пути я использую:

return books.Cast<IPublication>().ToList();
8
задан Gabe 25 November 2010 в 04:47
поделиться