【发布时间】:2014-07-19 08:35:21
【问题描述】:
我想序列化 List<object> 包含我写的特定类。
public static void Main(string[] args)
{
List<object> ListToSerialize = new List<object>();
ListToSerialize.Add(new CustomeClass());
ListToSerialize.Add("");
ListToSerialize.Add(2);
ListToSerialize.Add(new int[] { 7, 8, 6 });
XmlSerializer xmlSerializer = new XmlSerializer(ListToSerialize.GetType());
StringWriter stringWriter = new StringWriter();
using (var xmlWriter = XmlWriter.Create(stringWriter))
{
xmlSerializer.Serialize(xmlWriter, ListToSerialize);
}
string Res = stringWriter.ToString();
}
[Serializable]
public class CustomeClass
{
}
我得到了错误: 生成 XML 文档时出错。 类型 New.CustomeClass 不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。
我还实现了IXmlSerializable 接口。
[Serializable]
public class CustomeClass : IXmlSerializable
{
public System.Xml.Schema.XmlSchema GetSchema()
{
throw null;
}
public void ReadXml(System.Xml.XmlReader reader)
{
}
public void WriteXml(System.Xml.XmlWriter writer)
{
writer.WriteString("1");
}
}
我得到以下错误:
New.CustomeClass 类型不能在此上下文中使用。要将 New.CustomeClass 用作类或结构的参数、返回类型或成员,参数、返回类型或成员必须声明为类型 New.CustomeClass(它不能是对象)。 New.CustomeClass 类型的对象不能用于无类型集合,例如 ArrayLists。
当我使用List<CustomeClass> 时它可以工作,但我需要它是List<object>。
感谢您的帮助
【问题讨论】:
-
[Serializable]用于不同的序列化程序,在这里没有任何用处。 -
如“不管有没有它都不起作用”?
-
我删除了[Serializable],所以它还不能工作。
-
为什么需要它成为
List<object>?你打算把所有种类的对象都放在那个列表中吗?也许您应该考虑更好地组织数据... -
因为我正在编写一个动态代码,我不知道最终用户会选择哪种类型。
标签: c# xml serialization arraylist xmlserializer