我在单独的程序集中有一个类定义。该类被标记为可序列化:
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 -> 在程序集中输入 System.IO.FileStream 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 未标记为可序列化。
我不明白这一点,因为整个类都被标记为可序列化。有什么建议吗??