С тех пор как я работал в ASP.Net последние пару лет, я много работал с Newtonsoft.Json. Оказалось, что это замечательно и в WinForms, и в этом случае казалось, что это упрощает передачу объектов между формами ... даже сложные объекты очень просты!
Реализация такая:
// Set Object Property within Form
public partial class FlashNotify : Form
{
public string Json { get; set; }
}
В событии загрузки формы вы можете получить свой объект:
private void FlashNotify_Load(object sender, EventArgs e)
{
// Deserialize from string back to object
CommUserGroupMessage msg = new CommUserGroupMessage();
msg = Newtonsoft.Json.JsonConvert.DeserializeObject<CommUserGroupMessage>(Json);
}
Наконец, передает объект в форму:
// Serialize the Object into a string to pass
string json = Newtonsoft.Json.JsonConvert.SerializeObject(msg);
FlashNotify fn = new FlashNotify();
fn.Json = json;
fn.Show();
Да, исходный выбранный ответ, вероятно, проще, однако мне нравится этот подход , так как он устраняет необходимость повторять класс в вашей форме, что, я думаю, облегчает поддержание ( Исправление: Мисс правильно прочитал статический класс в примере, я сначала подумал, что он был воспроизведен в форме).