序列化匿名类型

use*_*896 5 c# serialization anonymous

我想将匿名类型变量转换为 byte[],我该怎么做?

我试过的:

byte[] result;

var my = new
{
    Test = "a1",
    Value = 0
};

BinaryFormatter bf = new BinaryFormatter();

using (MemoryStream ms = new MemoryStream())
{
    bf.Serialize(ms, my); //-- ERROR

    result = ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

我有错误:

mscorlib.dll 中出现“System.Runtime.Serialization.SerializationException”类型的异常,但未在用户代码中处理

Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Int32,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]' in Assembly='MyCulture.0 =neutral, PublicKeyToken=null' 未标记为可序列化。附加信息:类型 '<>f__AnonymousType10`2[[System.String, mscorlib,

有人可以帮助我吗?我做错了什么?或者这是不可能做到的?

Cod*_*ter 3

要使用默认序列化器系列(XmlSerializer、BinaryFormatter、DataContractSerializer...)进行序列化的类型需要进行标记[Serializable],需要是公共类型,并且需要公共读写属性。

匿名类型不能履行此角色,因为它们没有任何必需的属性。

只需创建一个类型,然后将其序列化即可。