Tôi đang cố gắng sử dụng System.Dynamic.ExpandoObject
để tôi có thể tạo thuộc tính động trong thời gian chạy. Sau đó, tôi cần phải vượt qua một thể hiện của đối tượng này và cơ chế được sử dụng yêu cầu serialization.Tôi có thể tuần tự hóa ExpandoObject trong .NET 4 không?
Tất nhiên, khi tôi cố gắng để serialize đối tượng năng động của tôi, tôi nhận được ngoại lệ:
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.
Tôi có thể sắp đặt từng ExpandoObject? Có cách nào khác để tạo một đối tượng động có thể tuần tự hóa được không? Có lẽ sử dụng một wrapper DynamicObject?
tôi đã tạo ra một Windows rất đơn giản Forms ví dụ để lặp lại trong các lỗi:
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();
}
}
}
ngắn thực hiện một hướng dẫn serialization thường xuyên, tôi nghiêng để nói rằng nếu nó không được đánh dấu 'Serializable' sau đó, không, khá đơn giản. –