我有类:为什么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];'。 –