假設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