Я создал пользовательский элемент управления в 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
?