WCF簡單教程 4 資料契約

2021-08-28 08:16:55 字數 618 閱讀 4134

第四篇:用資料契約傳遞自定義資料物件

之前的演示中,我們一直都是在用string型別做引數和返回值,實際專案中肯定會傳遞自定義的資料型別。與webservice不同,wcf想傳遞自定義資料,必須要將其定義為資料契約。看乙個例子:

using system; 

using system.runtime.serialization;  //注意加上這個引用,並引用相應的dll

namespace server 

[datamember] 

public

int age  

} } 

這個契約需要在客戶端和服務端都存在,然後它就可以作為引數或返回值,在雙方互相傳遞了,具體例子就省略了。

這裡面有一點需要注意,資料契約與服務契約有一點小小的區別,資料契約要求在客戶端和服務端必須保持完全一致的類名與命名空間,否則就無法傳遞資料,這與服務契約是不同的,服務契約放到客戶端時允許換個命名空間。

組內有同事遇到過類似的問題,直接把資料契約類copy了乙份到客戶端之後改了命名空間,然後就一直取不到資料。 這裡也引出另乙個話題,推薦把各種契約(不含實現類)單獨封裝成乙個dll,雙方均引用它,結構上清晰,也避免出錯。

wcf資料契約

專案中需要使用繼承關係,乙個函式返回特定的子類,在序列化的時候需要告訴序列化器,在父類檔案中使用kowntype注釋即可。namespace healthadminwebservice.logic datamember public string exercisestep datamember pu...

WCF揭秘 共享資料契約

當客戶端引用wcf服務時,必須為服務定義乙個唯一的命名空間。在預設情況下,這個服務中所用到的類會被匯入到這個命名空間內。這樣,在不同的服務內引用同乙個資料契約時就會遇到乙個問題 在客戶端,同乙個資料契約被匯入到不同的命名空間中,無法實現轉換。在以下例子中,personservice與contract...

談WCF資料契約疑問之共享資料契約

最近在做專案的時候,發現同乙個資料契約再客戶端隸屬於兩個不同的命名空間,為此如果兩個服務進行互動的時候會涉及到型別 的問題,互操作性很差,要進行不必要的拆和裝,在前面終於讓我找到了答案,下面我來描述一下這個場景,大家請看下面 實體類 大家請注意命名空間 using system using syst...