Sto riscontrando un problema nella serializzazione xml della raccolta osservabile.XMLSerialize a ObservableCollection
Qui è quello che sto serializzazione:
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; }
...
}
Ecco come ho serializzare:
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 , "...");
...
}
}
Ma un errore si verifica nella riga xs.Serialize(wr, item);
dicendo:
InvalidOperation Eccezione: si è verificato un errore durante la generazione del documento XML. Eccezione interna: Il tipo ScrumPresentor.ObservableCollection`1 [[ScrumPresentor.UserStory, ScrumPresentor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null ]] non può essere utilizzato in questo contesto.
Sto usando Visual Studio 2010, l'applicazione WPF in .NET 4.0.
Grazie, ma fare un lavoro intorno che invece di mettere il 'ObservableCollection' in 'ObservableCollection ', Creo una classe che contatina la 'ObservableCollection '. Ma il tuo codice funziona davvero. Grazie comunque. Voglio votare la tua risposta ma non posso perché ho almeno bisogno di 15 rappresentanti. –
Puoi fornire il codice per questa classe che hai creato per mettere la collezione osservabile. Sto affrontando lo stesso problema –