C# 在WPF中保存动态创建的对象

C# 在WPF中保存动态创建的对象,c#,wpf,visual-studio,save,C#,Wpf,Visual Studio,Save,在我的WPF应用程序中,我向用户提供了一个表单,用户填写关于位置的表单。然后使用这些表单条目从自定义类构造对象,并在下一个视图中显示有关输入位置的详细信息 我需要的是一种能够保存动态创建的对象的方法,以便在关闭和重新打开应用程序时,我可以显示以前输入的对象的名称属性,以便用户可以重新打开以前输入的对象中的数据 我认为我可以将它们序列化为一个.osl文件,但这只保存了公共值。 所以我想一定有更简单的方法 感谢您的帮助 了解.Net序列化 [Serializable] class Pers

在我的WPF应用程序中,我向用户提供了一个表单,用户填写关于位置的表单。然后使用这些表单条目从自定义类构造对象,并在下一个视图中显示有关输入位置的详细信息

我需要的是一种能够保存动态创建的对象的方法,以便在关闭和重新打开应用程序时,我可以显示以前输入的对象的名称属性,以便用户可以重新打开以前输入的对象中的数据

我认为我可以将它们序列化为一个.osl文件,但这只保存了公共值。 所以我想一定有更简单的方法


感谢您的帮助

了解
.Net序列化

 [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);
            }
        }
使用:


通过这种方式,您可以序列化/反序列化任何您想要的内容。

阅读
.Net序列化

 [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);
            }
        }
使用:


通过这种方式,您可以序列化/反序列化任何您想要的内容。

回答得很好,我已经让它完美地工作了。尽管您知道是否可以使用此方法将多个对象保存到文件中,并能够将它们反序列化回单独的对象中?因为当前的方法每次只是简单地覆盖xml文件。我知道我可以使用StreamWriter简单地添加到xml文件中,但正如我所说的,反序列化回单独的对象成为一个问题。答案很好,我已经让它完美地工作了。尽管您知道是否可以使用此方法将多个对象保存到文件中,并能够将它们反序列化回单独的对象中?因为当前的方法每次只是简单地覆盖xml文件。我知道我可以使用StreamWriter简单地添加到xml文件中,但正如我所说的,反序列化回单独的对象会成为一个问题。