J'ai ce modèle de données:Impossible sérialisation collection de collections
public abstract class AbstractCollection
{
}
public abstract class TypedAbstractCollection<T1> : AbstractCollection
{
}
public class MyCollection<T> : TypedAbstractCollection<T>, IEnumerable<T>
{
private readonly List<T> _valueList = new List<T>();
public IEnumerator<T> GetEnumerator()
{
return _valueList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public void Add(T value)
{
_valueList.Add(value);
}
}
[XmlInclude(typeof(MyCollection<string>))]
public class Shallow : IEnumerable<AbstractCollection>
{
private readonly List<AbstractCollection> _listOfCollections = new List<AbstractCollection>();
public IEnumerator<AbstractCollection> GetEnumerator()
{
return _listOfCollections.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public void Add(AbstractCollection sample)
{
_listOfCollections.Add(sample);
}
}
J'utilise IEnumerable dans ma collection avec la fonction Ajouter() pour lui sérialisation automatiquement la collecte, mais lorsque je tente de lui sérialisation XML:
Shallow shallow = new Shallow
{
new MyCollection<string>
{
"first",
"second"
}
};
XmlSerializer formatter = new XmlSerializer(shallow.GetType(),
new[] { typeof(OneWayMapper<string, string>) });
using (FileStream fs = new FileStream("data.xml", FileMode.OpenOrCreate))
{
formatter.Serialize(fs, shallow);
}
J'ai eu l'étrange erreur sans information nécessaire:
le type 'MaCollection' ne peut être u sed dans ce contexte
Mais, si je vais utiliser au lieu de la classe MyCollection MyItem<T>
avec la valeur de l'élément typé - il n'y aura pas d'erreurs. Donc c'est ok avec les collections dactylographiées, la classe abstraite et ainsi de suite, mais pas avec la collection de collections.
Comment puis-je résoudre ce problème?
J'ai essayé de stocker MyCollections en tant que public readonly List ListOfCollections = new Liste () 'et utilisez' XmlArray ', mais cela n'a pas aidé. J'ai eu la même erreur. –