除了二进制数据外,其它的数据进行序列化是正常的(没有更改二进制数据也行),我想是写二进制时的问题:
'VB
dim row as DataRow = mDataTable.Rows(0)
row.BeginEdit()
row("照片") = b'b为二进制数据
row.EndEdit
dim mBinaryFormatter as BinaryFormatter = new BinaryFormatter()
dim file as new FilemStm1("C:\save.dat")
mBinaryFormatter.Serialize(file,mDataSet) //C#
DataRow row = mDataTable.Rows(0);
row.BeginEdit();
row("照片") = b;//b为二进制数据,byte[]
row.EndEdit;
BinaryFormatter mBinaryFormatter = new BinaryFormatter();
FilemStream file = new FilemStream("C:\save.dat");
mBinaryFormatter.Serialize(file,mDataSet);
'VB
dim row as DataRow = mDataTable.Rows(0)
row.BeginEdit()
row("照片") = b'b为二进制数据
row.EndEdit
dim mBinaryFormatter as BinaryFormatter = new BinaryFormatter()
dim file as new FilemStm1("C:\save.dat")
mBinaryFormatter.Serialize(file,mDataSet) //C#
DataRow row = mDataTable.Rows(0);
row.BeginEdit();
row("照片") = b;//b为二进制数据,byte[]
row.EndEdit;
BinaryFormatter mBinaryFormatter = new BinaryFormatter();
FilemStream file = new FilemStream("C:\save.dat");
mBinaryFormatter.Serialize(file,mDataSet);
'VB
class MyClass1
dim mData as Byte()
public property Data as byte()
Get
return mData
end Get
Set (value as byte())
mData = value
end Set
end class
class MyClass2
dim mData as Integer()
public property Data as Integer()
Get
return mData
end Get
Set (value as Integer())
mData = value
end Set
end class
class MyClass3'失败
sub Save1(byval path as string)
dim mMyClass1 as new MyClass1()
dim data(100) as byte
mMyClass1.Data = data
dim mBinaryFormatter as BinaryFormatter = new BinaryFormatter()
FilemStream file = new FilemStream(path)
mBinaryFormatter.Serialize(file,mMyClass1)
end sub
'成功
sub Save2(byval path as string)
dim mMyClass1 as new MyClass2()
dim data(100) as integer
mMyClass2.Data = data
dim mBinaryFormatter as BinaryFormatter = new BinaryFormatter()
FilemStream file = new FilemStream(path)
mBinaryFormatter.Serialize(file,mMyClass2)
end sub
end class
不过分析这个可能会与垃圾收集的思想有关(一个对象能否到达,是回收的依据!),是不是说一个对象内部的对象的序列化与一个对象有序列化标记有关,或内部的其它原因?我也在研究办法