C# 包含大量对象的XmlSerializer异常
我正在将C# 包含大量对象的XmlSerializer异常,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我正在将DLL信息存储到以下类中: [XmlRoot("Modules")] [XmlInclude(typeof(Module))] public class Modules : List<Module> {} [XmlType("Module")] public class Module { [XmlIgnore()] public bool Selected { get; set; } [XmlElement()] public string Name { g
DLL
信息存储到以下类中:
[XmlRoot("Modules")]
[XmlInclude(typeof(Module))]
public class Modules : List<Module> {}
[XmlType("Module")]
public class Module
{
[XmlIgnore()]
public bool Selected { get; set; }
[XmlElement()]
public string Name { get; set; }
[XmlElement()]
public string Version { get; set; }
[XmlElement()]
public byte[] Binary;
}
然而,当我在列表中有113项时,我的问题就来了——现在很明显,这是相当多的二进制数据
我得到了一个系统。OutOfMemory
异常,我似乎记得必须增加某种阈值,但我找不到正确的属性或方法来准确地更改
我将其序列化为XML,以便将XML传递到SQL中,然后将信息存储在表中,只是为了了解我到底在做什么
我如何避开这个异常?有更好的方法吗?您可以同时使用字符串和书写。它们在内存中呈指数级增长。尝试使用一些可以创建缓冲流并进行持续写入而不是立即写入的方法。@关系我理解您的意思,但是我在序列化程序上看不到允许这样做的方法?您可能需要尝试System.IO.MemoryStream。还可以查看您的编码。如果XML不需要使用双字节字符集,那么可以使用单字节字符集将空间减半。
XmlSerializer serializer = new XmlSerializer(typeof(Modules));
using (StringWriter sw = new StringWriter())
{
serializer.Serialize(sw, ugModules.DataSource);
}