在 WPF 中保存动态创建的对象
Posted
技术标签:
【中文标题】在 WPF 中保存动态创建的对象【英文标题】:Saving dynamically created objects in WPF 【发布时间】:2012-07-29 16:14:15 【问题描述】:在我的 WPF 应用程序中,我向用户展示了一个表单,用户填写的表单大约是,例如一个位置。然后使用这些表单条目从自定义类构造一个对象,并在下一个视图中显示有关输入位置的详细信息。
我需要的是一种能够保存动态创建的对象的方法,这样当应用程序关闭并重新打开时,我可以显示以前输入的对象的名称属性,以便用户可以重新打开以前输入的对象中的数据。
我认为我可以将它们序列化为 .osl 文件,但这只会保存公共值。 所以我想一定有一个更简单的方法
任何帮助表示赞赏!
【问题讨论】:
【参考方案1】:了解.Net Serialization
。
[Serializable]
class Person
public int Age get; set;
public string Name get; set;
[Serializable]
class Address
public string City get; set;
static public void SerializeToXML(Person p, Address add)
IFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream(@"C:\data.xml", FileMode.Create, FileAccess.Write, FileShare.None))
formatter.Serialize(stream, p);
formatter.Serialize(stream, add);
static void DeserializeFromXML()
IFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream(@"C:\data.xml", FileMode.Open, FileAccess.Read, FileShare.None))
Person p = (Person)formatter.Deserialize(stream);
Address add = (Address)formatter.Deserialize(stream);
用途:
Person p = new Person Age = 23, Name = "Ram" ;
Address add = new Address City = "Khurja,India" ;
SerializeToXML(p, add);
DeserializeFromXML();
这样你就可以序列化/反序列化你想要的任何东西。
【讨论】:
很好的答案,我已经让它完美地工作了。尽管您知道是否可以使用此方法将多个对象保存到文件中并能够将它们反序列化回单独的对象?由于当前方法只是每次都简单地覆盖 xml 文件。而且我知道我可以使用 StreamWriter 简单地添加到 xml 文件中,但是正如我所说的那样,反序列化回单独的对象就成了一个问题。以上是关于在 WPF 中保存动态创建的对象的主要内容,如果未能解决你的问题,请参考以下文章