我有一個名爲Media
的bas類,其中有兩個繼承自它的類,Photo
和Video
。我正在嘗試爲媒體基類創建一個集合以容納這些照片和視頻對象。所以,我創建了一個MediaList
類,如下所示:使用yield return返回從基類型繼承的對象
public class MediaList: ICollection<Media>
{
private readonly XElement _mediaElement;
public MediaList(XElement mediaElement)
{
_mediaElement = mediaElement;
}
public IEnumerator<Media> GetEnumerator()
{
foreach (XElement element in _mediaElement.Elements())
{
Media media;
switch (element.Name.LocalName)
{
case "video":
media = new Video(element);
break;
case "photo":
media = new Photo(element);
break;
default:
media = null;
break;
}
yield return media;
}
}
//Rest of ICollection Implementation
}
當我遍歷列表中我得到以下異常:
值「Tool.Photo」的類型是不是「Tool.Video」,不能用於這個通用集合。
如果我返回Media
對象,爲什麼它拋出異常?有沒有更好的方法來解決這個問題?
媒體摘要? – 2009-10-29 13:37:56
沒有媒體不是摘要 – Geoff 2009-10-29 13:39:11
您確定代碼完全一樣嗎?您能否顯示客戶端代碼 - 介紹客戶端代碼中的(合/對)差異。 – 2009-10-29 13:43:42