gpt4 book ai didi

c# - FileStream 未标记为可序列化,但整个类是?

转载 作者:行者123 更新时间:2023-11-30 22:12:03 25 4
gpt4 key购买 nike

我在单独的程序集中有一个类定义。该类被标记为可序列化:

namespace example
{
[Serializable]
public class my_class
{
public List<string> text;
public FileStream audio;

public Image img;
public string nickname;
}
}

我可以毫无问题地加载此程序集并创建此类的实例。但是当我尝试使用下面的代码转换为 byte[] 时

private byte[] ToByteArray()
{
if (send == null) // 'send' is a my_class instance;
return null;

BinaryFormatter bf = new BinaryFormatter();
bf.Binder = new Binder();
bf.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Full;
bf.Binder.BindToType(example_assembly.FullName, "my_class");
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, send);
return ms.ToArray();
}

我得到:

System.Runtime.Serialization.SerializationException -> Type System.IO.FileStream in Assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.

我不明白这一点,因为整个类都被标记为可序列化。有什么建议吗??

最佳答案

Serializable 属性只是表示一个类可以被序列化。它不会改变类的基础功能。您可以将不可序列化的类和成员标记为可序列化。

FileStream 不可序列化。如此标记不会改变这一点。

http://msdn.microsoft.com/en-us/library/system.serializableattribute(v=vs.110).aspx

关于c# - FileStream 未标记为可序列化,但整个类是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com