У меня есть определение класса в отдельной сборке. Класс помечается как сериализации:FileStream не помечен как сериализуемый, но весь класс?
namespace example
{
[Serializable]
public class my_class
{
public List<string> text;
public FileStream audio;
public Image img;
public string nickname;
}
}
я могу загрузить эту сборку и создать экземпляр этого класса без проблем. Но когда я пытаюсь бросить в байт [] с помощью кода ниже
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 Ассамблеи», версия = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089 'не помечен как сериализуемый.
Я не понимаю этого, потому что весь класс помечен как сериализуемый. Любые sugestions ??
Да, * ваш * класс помечен как сериализуемый, но являются ли каждый из * членов * также сериализуемым? (IE: 'FileStream') – sircodesalot
В качестве побочного примечания: я действительно не рекомендую BinaryFormatter - я видел, как слишком много людей сильно укусались (обычно при управлении версиями) –