我有下面的代碼中,我試圖序列化列表保存到文件數據契約序列化的IList <T>
public static void Serialize<T>(this IList<T> list, string fileName)
{
try
{
var ds = new DataContractSerializer(typeof(T));
using (Stream s = File.Create(fileName))
ds.WriteObject(s, list);
}
catch (Exception e)
{
_logger.Error(e);
throw;
}
}
,我得到異常:
類型「 System.Collections.Generic.List`1 [[MyClass的, myNameSpace對象,版本= 1.0.0.0,文化=中性 公鑰=空]]」與數據合同名 'ArrayOf * MyClass *:http://schemas.datacontract.org/2004/07/ MyNameSpace' 不是預期的。考慮使用DataContractResolver或通過使用KnownTypeAttribute屬性或將其添加到傳遞給DataContractSerializer的已知類型的 列表,將靜態未知的任何 類型添加到已知類型列表中 - 例如, 。
[KnownType(typeof(MyClass))]
[DataContract]
public class MyClass
{
#region Properties
[DataMember]
public string Foo{ set; get; }
[DataMember]
public string Bar{ set; get; }
}
任何想法?
沒有繼承。
你不應該做新的DataContractSerializer (typeof(列表))或類似的 –
良好的捕獲。你可以寫作答覆,所以我可以標記它。謝謝, – DarthVader
沒問題,之前做過同樣的事情:) –