我有一个类数据数组,将其序列化为字节数组,然后将其推入数据库。该程序在夜间按计划运行。在另一端,我有另一个程序可以将这些数据从数据库中提取出来,并将其处理为报告-至少这是计划。 该类有2个命名空间,第一个是应用程序名称,第二个只是用来存放我的结构的名称。例如下面。
namespace FibreTrend
{
namespace Structures
{
[Serializable]
public class Trend
{
public Trend(DateTime date, string ref, int port)
{
Date = date;
Reference = ref;
PortNo = port;
}
public DateTime Date;
public string Reference;
public int PortNo;
}
}
}
{
// Function to take the trendData list, convert it to a byte array
// List<Structures.Trend> trendData;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream mStream = new MemoryStream())
{
bf.Serialize(mStream, trendData.ToArray());
byte[] b = mStream.ToArray();
// code that pushes the array into the database...
}
}
我有一个完全独立的应用程序,它从数据库中读取数据作为字节数组。然后,我将其从字节转换回我的数据类。
using (MemoryStream mStream = new MemoryStream())
{
BinaryFormatter binaryFormat = new BinaryFormatter();
mStream.Write(data, 0, data.Length);
mStream.Seek(0, SeekOrigin.Begin);
Structures.Trend[] obj = (Structures.Trend[])binaryFormat.Deserialize(mStream);
}
这是我的错误。它告诉我,它希望FibreTrend二进制文件反序列化数据。为什么??我的趋势类的大小相同,数据布局相同,是从其他项目中精确复制并粘贴的。为什么坚持在同伴中需要我的其他二进制文件。当我将二进制文件与之反序列化后,将其作为FibreTrend.Structures.Trend []放入对象中。我显然不会在其中包含其他二进制文件,也不会在双重处理将其转换为Report.Structures.Trend []的数据。它只是1和0的流,为什么我不能将其推入我认为我想要的任何类中,这不是强制转换的目的,是告诉编译器我希望如何对数据进行排序和结构化? >