如何在WCF中将类型公开为其他名称?

Exi*_*tos 1 .net c# oop wcf web-services

我上课了

class Video
{
   public string name;
   public string description;
}
Run Code Online (Sandbox Code Playgroud)

并且因为它通过WCF接口公开,我想重命名它(业务对象现在已被修改为封装音频和图像以及视频).

所以我的解决方案是编写另一个继承自它的类:

class MediaItem : Video
{
}
Run Code Online (Sandbox Code Playgroud)

我们有一个类似"工厂"的类,它从数据库中获取视频.

public Video GetVideo(int videoId)
{
}
Run Code Online (Sandbox Code Playgroud)

但是当我打电话给以下时:

MediaItem itemToReturn = (MediaItem)contentManagerforPage.GetVideo(mediaId);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

无法将"Video"类型的对象强制转换为"MediaItem"类型.

我明白我不能这样做(将基类强制转换为子类).那么解决方案是什么?

我无法通过WCF公开类名'Video',我需要公开MediaItem.是否有任何OO方法来解决这个问题(或许使用接口)?

如果没有,我可以重命名WCF属性中的对象吗?

Cod*_*ter 6

Video应该继承MediaItem,而不是相反.

您可以使用[DataContract(Name="YourName")]提供的其他名称来装饰该类,而不是在代码中使用.