我遇到了问题:
protected Test(SerializationInfo info, StreamingContext context)
{
sx = info.GetUInt16("sizex");
sy = info.GetUInt16("sizey");
sz = info.GetUInt16("sizez");
ushort[] tab = new ushort[sx * sy * sz];
tab = info.GetValue("data", System.UInt16[sx * sy * sz]);
Console.WriteLine("Deserializing constructor");
}
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
Console.WriteLine("Serializing...");
info.AddValue("sizex", sx);
info.AddValue("sizey", sy);
info.AddValue("sizez", sz);
info.AddValue("data", tab);
}
我遇到编译时错误:'ushort'是'type',在给定的上下文中无效。 我应该改变什么?
答案 0 :(得分:3)
info.GetValue需要一个类型,因此您不需要包含数组的大小,并使用typeof进行包装。此外,ushort[] tab = new ushort[sx * sy * sz];
是不必要的。
ushort[] tab = (ushort[])info.GetValue("data", typeof(ushort[]));
答案 1 :(得分:2)
试试这个:
protected Test(SerializationInfo info, StreamingContext context)
{
sx = info.GetUInt16("sizex");
sy = info.GetUInt16("sizey");
sz = info.GetUInt16("sizez");
ushort[] tab = new ushort[sx * sy * sz];
tab = (ushort[])info.GetValue("data", tab.GetType());
Console.WriteLine("Deserializing constructor");
}