我有一個相當簡單的 WCF 服務,它來回發送傳感器狀態。其中一個類型包含 type 的屬性Typepublic class SensorValue{ public string Name { get; set; } public string Value { get; set; } public Type ValueType { get; set; }}當我通過 WCF 檢索傳感器值列表時,我收到主題中提到的錯誤。是否有明顯的原因導致我不允許Type通過 WCF 進行(反)序列化?
1 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
是System.Type
抽象的。假設您使用例如 a 設置該屬性,typeof(System.Int32)
您將得到一個具體的實現,很可能是一個System.RuntimeType
。(不)幸運的是,該類型不是公開的,因此 Datacontract 序列化程序根本無法獲取它。它失敗并顯示:
SerializationException:不需要輸入數據協定名稱為“RuntimeType: http:?//schemas.datacontract.org/2004/07/System ”的“System.RuntimeType”。如果您使用 DataContractSerializer,請考慮使用 DataContractResolver,或者將任何靜態未知的類型添加到已知類型列表中 - 例如,通過使用 KnownTypeAttribute 屬性或將它們添加到傳遞給序列化器的已知類型列表中。
嘗試任何指導來解決您的問題是沒有用的。將 ValueType 屬性的類型替換為正常的類型(例如字符串)并提供足夠的信息以便客戶端可以根據您在 ValueType 中提供的內容重新創建類型要容易得多。
- 1 回答
- 0 關注
- 110 瀏覽
添加回答
舉報
0/150
提交
取消