C# 如何使用XMLSerializer使用对象序列化非泛型IList

C# 如何使用XMLSerializer使用对象序列化非泛型IList,c#,xmlserializer,C#,Xmlserializer,我试图序列化某个对象,该对象包含一个带有子元素的IList。IList的IList是非通用的,我不能只在通用的一级上实现它。 我得到了类似“MyObjectChild类型不是预期的…”这样的异常,它说明了一些关于XMLInclude的内容,但我认为这不是我要搜索的。 有人知道如何使用xmlserializer来序列化子元素吗? 这两个元素都是[可序列化] XmlSerializer xmlSerializer = new XmlSerializer(typeof ObservableCollec

我试图序列化某个对象,该对象包含一个带有子元素的
IList
。IList的
IList
是非通用的,我不能只在通用的一级上实现它。 我得到了类似“MyObjectChild类型不是预期的…”这样的异常,它说明了一些关于XMLInclude的内容,但我认为这不是我要搜索的。 有人知道如何使用
xmlserializer
来序列化子元素吗? 这两个元素都是
[可序列化]

XmlSerializer xmlSerializer = new XmlSerializer(typeof ObservableCollection<MyEntryViewItem>));
FileStream fileStream = new FileStream(exportPath, FileMode.Create);

xmlSerializer.Serialize(fileStream, _listEntries);

public IList ElementChildren { get { return _item.Children; } set { _item.Children = value; RaisePropertyChanged(() => ElementChildren); } }

[Serializable]
public sealed class ElementChild
{
    private int _id;
    private string _text;
    private string _path;
    ...
}
XmlSerializer XmlSerializer=新的XmlSerializer(类型ObservableCollection));
FileStream FileStream=newfilestream(exportPath,FileMode.Create);
Serialize(fileStream,_listEntries);
公共IList ElementChildren{get{return}item.Children;}set{item.Children=value;RaisePropertyChanged(()=>ElementChildren);}
[可序列化]
公共密封类ElementChild
{
私人内部id;
私有字符串_文本;
私有字符串路径;
...
}

XmlSerializer以特殊的方式处理IList(实际上是ICollection和IEnumerable,但IList两者都是)。MSDN页面上有注释:

XmlSerializer对 实现IEnumerable或ICollection。实现的类 IEnumerable必须实现接受单个 参数Add方法的参数必须与当前的类型相同 从返回的值的当前属性返回 GetEnumerator,或该类型的基之一。实现的类 ICollection(如CollectionBase)除了IEnumerable必须 具有一个公共项索引属性(C#中的索引器),该属性采用 整数,并且它必须具有integer类型的公共计数属性。这个 Add方法的参数必须与从中返回的参数类型相同 项属性,或该类型的基之一。上课 在实现ICollection时,将检索要序列化的值 从索引项属性,而不是通过调用GetEnumerator


根据需要,您可以使用
xmlclude
指定列表的类型。在

中可以找到另一种方法,您试图序列化MyEntryViewItem的集合,这个类是什么?此外,该错误还引用了另一个未放入上下文的CLA,MyObjectChild。我想更多的信息会有很大帮助!它只是一个基本类,包含一些我想要序列化的属性(主要是字符串)。但其中一个属性是元素类型为ElementChild的IList…MyObjectChild与ElementChild相同。。。我把名字弄混了。。。