【发布时间】:2009-02-04 20:42:52
【问题描述】:
我在 XAML 中创建了一个自定义控件,并添加了一些自定义属性。现在,如果可能,我想将其序列化为 JSON。这是(基本上)我所拥有的:
public partial class MyCustomClass : UserControl
{
public Dictionary<char, int[]> ValueMap;
public int Value { get; set; }
}
在处理序列化的代码中:
public static string Serialize(object objectToSerialize)
{
using (MemoryStream ms = new MemoryStream())
{
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(objectToSerialize.GetType());
serializer.WriteObject(ms, objectToSerialize);
ms.Position = 0;
using (StreamReader reader = new StreamReader(ms))
return reader.ReadToEnd();
}
}
但是,serializer.WriteObject(ms, objectToSerialize); 抛出
System.Runtime.Serialization.InvalidDataContractException:
考虑用 DataContractAttribute 属性,以及 标记您想要的所有成员 与 DataMemberAttribute 属性。 或者,您可以确保 类型是公共的并且有一个无参数的 构造函数 - 的所有公共成员 然后该类型将被序列化,并且 不需要任何属性。”
现在,当我将这些属性添加到MyCustomClass 时,我当然会遇到同样的异常,只是这次是System.Windows.UIElement 而不是MyCustomClass。
那么,有没有办法用现有的序列化方法序列化我的自定义派生类,或者我应该为MyCustomClass编写自定义序列化方法?
【问题讨论】:
标签: c# .net silverlight json serialization