DataContractSerialization - 序列化OutofMemoryException

时间:2015-09-04 15:01:54

标签: c# datacontractserializer

我有一个给定类型的serializesdeserializes个对象的类。我正在尝试序列化包含文件名,文件中的数据以及与文件关联的一些其他详细信息(如创建时间,修改时间等)的自定义文件对象。另外,custome类包括我在接收器端需要的一些属性或标志(我反序列化的地方)。

当我尝试序列化大约30K这样的文件对象时,它会成功地为大多数文件执行序列化,但会抛出一些文件的outofmemoryexception。

下面是我的序列化类代码:

public static string SerializeToByteArray(Type T, object request)
        {

        DataContractSerializer serializer = new DataContractSerializer(T);
        using (MemoryStream memStream = new MemoryStream())
        {
            using (StreamReader reader = new StreamReader(memStream))
            {
                serializer.WriteObject(memStream, request);
                memStream.Position = 0;
                return reader.ReadToEnd();
            }
        }
    }


    public static T DeserializeFromByteArray<T>(string xml)
    {
        DataContractSerializer deserializer = new DataContractSerializer(typeof(T));
        using (MemoryStream memStream = new MemoryStream())
        {
            byte[] data = System.Text.Encoding.UTF8.GetBytes(xml);
            memStream.Write(data, 0, data.Length);
            memStream.Position = 0;

            var newobj = (T)deserializer.ReadObject(memStream);
            return newobj;
        }
    }

0 个答案:

没有答案