我正在讀reference page哪些類型可由WCF序列化,並且它對哪些類型是自動KnownType不明確,哪些不是。任何人都可以對此有所瞭解嗎?例如,如果我的DataContract有一個Object類型的成員,那麼如果我傳遞一個字符串,它將會很好地序列化,但如果我傳遞一個Dictionary,則不會。字典將需要一個KnownType,儘管在該頁面中被提及爲支持。有了這個我有兩個問題:找出對象的實例是否是WCF中的DataContract可序列化的
所以問題是,什麼是自動KnowType WCF總是使用?
我需要的代碼將確定如果默認情況下對象的實例是KnownType。一種解決方案是從1的答案中提出一個詳盡的列表,然後用「obj is type」語句檢查每個對象,但這似乎是一個糟糕的實現。有更聰明的方法嗎?
編輯:
這reference列出了默認情況下知道的類型。所有原語少於DateTimeOffset加XmlElement。所以只剩下兩個:如果一個對象是原始類型,我怎麼知道?
編輯2: typeof(obj).IsPrimitive將完成大部分工作!
您至少有部分錯誤。 KnownType也用於其他目的。例如,如果我不爲Dictionary添加KnownType,我會得到序列化異常。你也沒有回答我的兩個問題:-(我是低調的,但是如果你編輯答案來真正解決我的問題,我會再回來。再一次,我不會問關於KnownType的作用。 –
2010-12-04 19:50:42