【发布时间】:2011-11-16 19:57:07
【问题描述】:
为简洁起见,我将在这里泛泛而谈。我有一个基类 - Review - 有一个孩子 - ShelfAwarenessReview。
我还有一个方法,接口需要它的签名:
public List<Review> GetReviews(string filePath)
{
XElement xmlDoc = XElement.Load(filePath);
var dtos = from item in xmlDoc.Descendants("message")
select new ShelfAwarenessReview()
{
PubDate = item.Element("meta").Attribute("permlinkdate").Value,
Summary = item.Element("meta").Element("summary").Value,
Isbn = item.Element("BookInfo").Element("ISBN").Value
};
List<Review> reviews = new List<Review>();
reviews = dtos.ToList();
return reviews;
}
现在,我得到的错误是 List<ShelfAwarenessReview> 不能隐式转换为 List<Review>。
我已经尝试了几种类型的投射 - 或者,至少我认为我这样做了 - 但它不起作用。我认为因为 ShelfAwarenessReview 是 Review 的一个孩子,所以这会起作用。毕竟,正如继承格言所说,“所有的烤面包机都是电器,但不是所有的电器都是烤面包机”......
我需要做什么才能获得 ShelfAwarenessReviews 列表以将方法作为其父类型(评论)的列表退出?
仅供参考,调用此方法的代码并不关心它获得的类型评论。后续代码将在任何东西上运行。
非常感谢。
【问题讨论】: