Я пытался сериализовать класс (см. Ниже), который наследует от List<int>
и имеет поля, которые предоставляют дополнительную информацию.DataContractSerializer игнорирует поля в подклассе Collections
Первоначально, я использовал XmlSerializer
, однако у меня были проблемы с ним.
Согласно this post это по дизайну с XmlSerializer
не сериализует поля, но DataContractSerializer
должно работать.
Любые предложения были бы высоко оценены!
[CollectionDataContract]
public class Group : List<int>
{
[DataMember]
public string Key { get; set; }
}
static void Main()
{
Group test = new Group { Key = "Test key" };
test.Add(60);
DataContractSerializer serializer = new DataContractSerializer(typeof(Group));
MemoryStream stream = new MemoryStream();
serializer.WriteObject(stream, test);
stream.Position = 0;
test = serializer.ReadObject(stream) as Group;
Console.WriteLine("{0}: {1}", test.Key ?? "No luck", test[0]);
}
Спасибо, Ной
К сожалению, мне нужно, чтобы выставить объект таким образом. Я думаю, что мне придется реализовать оболочку, чтобы обеспечить необходимый мне интерфейс, тогда часть сериализации будет заключаться в том, чтобы превратить объект во что-то подобное. Благодаря! – noah