WCF聲名未知的Type問題與KonwnType屬性的運用

假設WCF的契約如下


參數composite的類如下


如果這時我要將MyDataInfo發給WCF服務端則會報錯:
元素“:item”含有“http://schemas.datacontract.org/2004/07/TestModule.Code:TestI
nfo”數據協定的數據。反序列化程序不知道映射到此協定的類型。請將與“MyDataInfo”對
應的類型添加到已知類型的列表中,例如,通過使用 KnownTypeAttribute 屬性或通過將其
添加到傳遞給 DataContractSerializer 的已知類型的列表等方法。

解決方法:
修改CompositeType這個類,加一個屬性KnowType:



但這如果今後越來越多的繼承ISynchDataInfo未知的類,則會頻繁的改CompositeType類聲名KonwnType,這樣不符合我們的封裝原則。這時我們要藉助web.config或app.config(非Web項目用app.config):

然後修改CompositeType這個類

最後大功告成。。
參考:http://msdn.microsoft.com/zh-cn/library/ms731795.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章