XMLSerialize une ObservableCollection
Je vais avoir un problème dans la sérialisation xml de collection observable.
Voici ce que je suis la sérialisation:
public enum Status { Pending, Active, Completed, Cancelled }
public abstract class Entity : INotifyPropertyChanged
{
...
}
public class UserStory : Entity
{
public uint StoryID { get; set; }
public Status Status { get; set; }
...
public ObservableCollection<Task> Tasks { get; set; }
}
public class Task : Entity
{
public uint TaskID { get; set; }
...
}
Ici est de savoir comment je le sérialiser:
public static void SerializeObjectToXML<T>(T item, string FilePath)
{
XmlSerializer xs = new XmlSerializer(typeof(T));
using (StreamWriter wr = new StreamWriter(FilePath))
{
xs.Serialize(wr, item);
}
}
public class Main()
{
ObservableCollection<UserStory> UserStories { get; set; }
void Main()
{
...
ObservableCollection<object> Document = new ObservableCollection<object>();
Document.Add(UserStories);
SerializeObjectToXML<ObservableCollection<object>>(Document , "...");
...
}
}
Mais une erreur se produit dans le xs.Serialize(wr, item);
ligne en disant:
Exception InvalidOperation: Il y a une erreur de la génération du document XML.
Intérieure Exception: Le type ScrumPresentor.ObservableCollection`1[[ScrumPresentor.UserStory,
ScrumPresentor, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null]] ne peut pas être utilisé dans ce contexte.
Je suis à l'aide de Visual Studio 2010, WPF application .NET 4.0.
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser le Système.Xml.La sérialisation.XmlInclude attribut. Je ne sais pas si j'ai correctement comprendre votre intention d'une collection de collections, mais en supposant que c'est ce que vous voulez, voici une solution qui fonctionne. La sortie suit le code:
Le code ci-dessus produit ce fichier texte:
ObservableCollection<UserStory>
dansObservableCollection<Entity>
, j'ai créer une classe qui contatins laObservableCollection<UserStory>
. Mais ton code ne fonctionne vraiment pas. Merci, de toute façon. Je ne veux pas voter votre réponse, mais je ne peux pas car j'ai au moins besoin de 15 rep.