2011-09-06 55 views
1

我有一個類如何在WCF中將類型公開爲不同的名稱?

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公開類名'視頻'我需要公開MediaItem。是否有任何面向這個問題的OO方法(可能使用一個接口)?

如果不能,我可以重命名WCF屬性中的對象嗎?

回答

0

給定類型的數據協定的默認名稱是該類型的名稱。要覆蓋默認值,請將DataContractAttribute的Name屬性設置爲替代名稱。

[DataContract(Name = "MyMediaItem")] 

詳情請參閱herehere

+0

歡呼這個我想是我一直在尋找打我... – Exitos

6

Video應該從MediaItem繼承,而不是相反。

您可以使用[DataContract(Name="YourName")]來修飾類,以提供除代碼中使用的其他名稱。

+1

+1由30秒:) –

0

或者您可以使Video繼承MediaItem並使MediaItem抽象。然後使用類定義的KnownType屬性指定實現。

看到here更多信息

相關問題