Sto tentando di utilizzare uno System.Dynamic.ExpandoObject
così posso creare dinamicamente le proprietà in fase di runtime. Successivamente, ho bisogno di passare un'istanza di questo oggetto e il meccanismo utilizzato richiede la serializzazione.Posso serializzare un ExpandoObject in .NET 4?
Naturalmente, quando si tenta di serializzare il mio oggetto dinamico, ottengo l'eccezione:
System.Runtime.Serialization.SerializationException was unhandled.
Type 'System.Dynamic.ExpandoObject' in Assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.
Posso serializzare l'ExpandoObject? C'è un altro approccio alla creazione di un oggetto dinamico che è serializzabile? Forse usando un wrapper DynamicObject?
ho creato un semplice Windows Form esempio per duplicare l'errore:
using System;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Dynamic;
namespace DynamicTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
dynamic dynamicContext = new ExpandoObject();
dynamicContext.Greeting = "Hello";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create,
FileAccess.Write, FileShare.None);
formatter.Serialize(stream, dynamicContext);
stream.Close();
}
}
}
Breve di attuare un manuale routine di serializzazione, sono propenso a dire che se non è contrassegnato come 'Serializable' quindi, no, abbastanza semplicemente. –