我有一堂课

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")]


有关更多详细信息,请参见herehere

07-24 15:52