System.Dynamic.ExpandoObject
実行時にプロパティを動的に作成できるように、を使用しようとしています。後で、このオブジェクトのインスタンスを渡す必要があり、使用されるメカニズムにはシリアル化が必要です。
もちろん、動的オブジェクトをシリアル化しようとすると、例外が発生します。
System.Runtime.Serialization.SerializationExceptionは処理されませんでした。
アセンブリ'System.Core、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'に「System.Dynamic.ExpandoObject」と入力してもシリアル化可能としてマークされていません。
ExpandoObjectをシリアル化できますか?シリアル化可能な動的オブジェクトを作成する別のアプローチはありますか?おそらくDynamicObjectラッパーを使用していますか?
エラーを再現するために、非常に単純なWindowsフォームの例を作成しました。
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();
}
}
}