首页 > 解决方案 > 在 SQL C# 中将对象序列化和反序列化为 varbinary

问题描述

我找不到这个问题的答案

实际上我是一个使用 C# Windows 应用程序的卡片设计师我想将用户卡片保存到数据库中,所以首先我获取了所有卡片属性并尝试对其进行序列化并将其放在字节数组中。这是将卡片保存到字节数组并对其进行序列化的代码。

public byte[] SaveAsByte()
    { 
        //Save this card in a file
        SerializedCard sc = new SerializedCard();
        BinaryFormatter formatter = new BinaryFormatter();
        Stream stream = new System.IO.MemoryStream();

        sc.CardWidth = this.CardWidth;
        sc.CardHeight = this.CardHeight;
        sc.BackCard = this.backCard;
        sc.FrontCard = this.frontCard;


        formatter.Serialize(stream, sc);

        var arry = ConvertToArry(stream);
        stream.Close();
        this.NeedSave = false;

        return arry;
    }

private  byte[] ConvertToArry(Stream input)
    {
        byte[] buffer = new byte[16 * 1024];
        using (MemoryStream ms = new MemoryStream())
        {
            int read;
            while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, read);
            }
            return ms.ToArray();
        }
    }

我的第一个问题是,每当我将任何流对象转换为字节数组并尝试获取数组大小时,结果为零???我无法理解。序列化过程有什么问题吗?

任何人都可以帮忙吗?

标签: c#sqlserializationstreamdeserialization

解决方案


推荐阅读