Ich möchte anonyme Typvariable in Byte [] konvertieren, wie kann ich das tun?Serialisierung von anonymen Typen
Was ich versucht:
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();
}
Ich habe Fehler:
An exception of type 'System.Runtime.Serialization.SerializationException' occurred in mscorlib.dll but was not handled in user code
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' in Assembly 'MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.Additional information: Type '<>f__AnonymousType10`2[[System.String, mscorlib,
Kann mir jemand helfen? Was mache ich falsch? Oder das ist nicht möglich?
Was Sie "falsch machen", erwartet, dass anonyme Typen im Wesentlichen mit BinaryFormatter serialisierbar sind. Wie der Fehler sagt, ist der Typ nicht als serialisierbar gekennzeichnet - was mich nicht besonders überrascht. Ein anonymer Typ, der die Serialisierung unterstützt, würde erhebliche Probleme bereiten und würde sowieso nicht für nicht serialisierbare Eigenschaftstypen funktionieren. –
Haben Sie überlegt, einen echten Typ zu verwenden und ihn als serialisierbar zu kennzeichnen? –
Anonyme Typen wurden hinzugefügt, um LINQ einfacher zu unterstützen, damit keine benannten Typen für alles erstellt werden müssen. Sie sind nicht dazu gedacht, für langfristige Beharrlichkeit, Transport oder sogar für die Weitergabe in Ihrem Programm verwendet werden. Sie sind dazu bestimmt, lokal verwendet zu werden. Anonyme Typen sind daher nicht als serialisierbar gekennzeichnet.Da Sie die binäre Serialisierung später verwenden möchten, um sie zu deserialisieren, wäre es besser, wenn Sie uns sagen, was Sie in Bezug auf Funktionalität erreichen wollen, und dann können die Leute vielleicht eine bessere Antwort finden als "sorry, can ' t gemacht werden ". –