我在桌面WPF應用程序中使用Catel框架,當我嘗試將模型保存到文件時出現以下錯誤。類型<Type>與數據合同名稱<合同名稱>不是預期
Type 'GeoChemicalFuncsCS.Core.Models.BoilingModel' with data contract name 'BoilingModel:http://schemas.datacontract.org/2004/07/GeoChemicalFuncsCS.Core.Models' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.
我嘗試添加了KnownType和ServiceKnownType標籤的模型,但我得到:
KnownType could not be found.
或
ServiceKnownType could not be found.
而且我也試過WarmingUp的SerializationFactory在視圖模型:
var typesToWarmup = new Type[] { typeof(BoilingModel) };
SerializationFactory.GetXmlSerializer().Warmup(typesToWarmup);
但沒有改變。
有沒有人有任何建議?我現在可以做什麼?
謝謝 Saul Hidalgo。
現在我明白了。你根本沒有使用WCF。忘記我之前發佈的內容。 什麼是SerializationFactory?似乎並不是.NET框架的一部分,但似乎它試圖使用WCF serializaton機制,這可能不是你所需要的。對於對象的簡單XML序列化,您應該使用'System.Xml.Serialization.XmlSerializer'。 – chris 2014-09-04 09:48:43
您是否使用最新的預發佈?我們在序列化引擎上對Catel 4.0(即將發佈的版本)進行了數字改進。 – 2014-09-04 10:03:01
嗨Geert Van Horrik。 我想更新到Catel 4.0,但我還沒有完成。但是,我認爲這與我如何序列化我的對象有關。我這樣說是因爲我也試圖在不使用Catel的情況下序列化,而且我也有同樣的錯誤。我的代碼是: 'XmlSerializer Serializer = new XmlSerializer(typeof(MainWindowModel)); Serializer.Serialize(File.Create(AlcatrazSPCALC.Models.Constants.SaveFilePath),MainWindowModel);' 我的模型裏面有其他模型。你推薦我什麼? 而關於Catel 4.0。你建議我們使用它嗎?它足夠穩定嗎? – 2014-09-04 19:58:15