【问题标题】:Serialize a class containing a list<float[]> using SOAP Edit: list<MyClass>使用 SOAP 编辑序列化包含 list<float[]> 的类:list<MyClass>
【发布时间】:2013-11-26 15:51:35
【问题描述】:

所以我有一个包含浮点数列表的类[]。除此字段外的所有内容都是可序列化的。列表的大小不同,但 float[] 的大小是恒定的。

List<float[]> listOfStuff;

我编写了一个使用 Linq to XML 编写文件的方法,但我希望使用 Soap 或二进制格式化程序来完成这项工作。我在想如果我改变类,我不必改变所有的读写方法,如果需要,我可以使用二进制格式化程序序列化文件。此外,它本质上是几行代码,而不是很多。

关于如何使用序列化为包含列表的对象编写单个文件有什么想法吗?

编辑:

我收到了错误:

An unhandled exception of type 'System.Runtime.Serialization.SerializationException'         occurred in System.Runtime.Serialization.Formatters.Soap.dll

Additional information: Soap Serializer does not support serializing Generic Types : System.Collections.Generic.List`1[Application.MyClass].

感谢 BRAHIM 卡梅尔

问题不在于Brahim 在 cmets 中所说的对象中的列表,这似乎工作正常。这是我在写入一个文件时遇到问题的那些对象的列表(所以更深一层)。我试图序列化编写并包含我要编写的列表的类,并得到上述错误。

【问题讨论】:

  • 我看不出 DataContractSerializer 不能从您的数据生成 SOAP 消息的任何原因。您尝试了什么,有什么问题?
  • List 默认情况下是可序列化的,所以你的问题到底是什么
  • @nvoigt 我刚刚尝试使用肥皂和二进制格式化程序序列化和反序列化方法。我将不得不继续阅读并尝试 DataContractSerializer。如果可行,我会发布它。
  • @JDub 你觉得这个链接很有趣social.msdn.microsoft.com/Forums/en-US/…
  • @N4tkd BinaryFormatter 工作正常!感谢您的链接。

标签: c# linq serialization soap


【解决方案1】:

我想我会回答它,因为没有接受者。我在阅读上面链接的论坛时发现了这一点。

只需要使用“XmlSerializer”而不是 SOAP 序列化程序。它的工作原理相对相同。现在,如果我对类进行更改,我也不必将 Linq 更改为 XML 代码。而且现在只有几行。

看起来他们停止支持 Soap 并且 Soap 不支持序列化通用列表。

 public void saveXML(string filePath)
    {

        using (FileStream stream = new FileStream(filePath, FileMode.Create))
        {
            XmlSerializer format = new XmlSerializer(typeof(List<MyClass>));
            format.Serialize(stream, this.postList);
        }

    }



    private void readXML(string fileLocation)
    {
        using (FileStream stream = new FileStream(fileLocation,FileMode.Open))
        {

            XmlSerializer format = new XmlSerializer(typeof(List<MyClass>));

            postList = format.Deserialize(stream) as List<MyClass>;

        }

    }

Reference

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多