我有類:爲什麼MediaItem不能轉換爲SecureMediaItem?
[DataContract]
public class MediaItem : Video
{
//used to protect calling api from the incorrectly named video
}
[DataContract]
public class SecureMediaItem : MediaItem
{
[DataMember]
public PlayerEmbedToken Token;
}
然後,我有以下代碼:
List<MediaItem> dummyItems = new List<MediaItem>();
//cast the media item into a secure media item
SecureMediaItem retItem = (SecureMediaItem)dummyItems[mediaId];
//TODO: put in the Admin ID
retItem.Token.UserId = 1;
retItem.Token.IpAddress = VLSCore2.VlsSecurity.ParseIpFromString(ipAddress);
retItem.Token.UniquePlayerRef = Guid.NewGuid().ToString();
return retItem;
然而即時得到一個錯誤:
Unable to cast object of type 'VLSCore2.Entities.Security.Api.MediaItem' to type 'VLSCore2.Entities.Security.Api.SecureMediaItem'.
這只是一個簡單的widending投是不?阻止它像DataContract屬性的東西?
正確如此如果我有一個媒體項目的集合,我想把它放到一個安全的媒體項目,那麼我該怎麼做? – Exitos
這是可能的,因爲* that *會是一個擴大的演員:'var dummyItems = new List(); dummyItems.Add(新的SecureMediaItem()); // < - 完全有效'。 –
順便說一句:你得到的錯誤是一個運行時錯誤。最有可能的是,您試圖轉換的項目只是一個「MediaItem」而不是「SecureMediaItem」。以下代碼將導致此錯誤:'var dummyItems = new List(); dummyItems.Add(new MediaItem()); var x =(SecureMediaItem)dummyItems [0];'。 –