我有一堂课
class Video
{
public string name;
public string description;
}
而且由于它是通过WCF接口公开的,所以我想对其进行重命名(业务对象现已修改为封装音频,图像以及视频)。
所以我的解决方案是编写另一个继承自它的类:
class MediaItem : Video
{
}
我们有一个像工厂一样的类,它从数据库中获取视频。
public Video GetVideo(int videoId)
{
}
但是,当我致电以下内容:
MediaItem itemToReturn = (MediaItem)contentManagerforPage.GetVideo(mediaId);
我得到错误:
无法将类型为“视频”的对象转换为类型为“ MediaItem”的对象。
我知道我做不到(将基类转换为子类)。那么解决方案是什么?
我无法通过WCF公开类名“ Video”,我需要公开MediaItem。是否有任何面向对象的方法来解决此问题(也许使用接口)?
如果不能,我可以在WCF属性中重命名该对象吗?
最佳答案
给定类型的数据协定的默认名称是该类型的名称。要覆盖默认值,请将DataContractAttribute的Name属性设置为备用名称。
[DataContract(Name = "MyMediaItem")]
有关更多详细信息,请参见here和here。