【问题标题】:Using XMLSerializer for reading/saving settings file in WPF app [duplicate]使用 XMLSerializer 在 WPF 应用程序中读取/保存设置文件 [重复]
【发布时间】:2020-02-21 07:31:10
【问题描述】:

我有一个应用程序正在尝试实现加载和保存设置的功能。我从另一个 SO 用户的问题中得到了一些示例代码,它只工作了一半,但我不确定出了什么问题。

我在下面的代码中使用 XmlSerializer 将 AppSettings 对象保存到文件中,并将文件读回对象。如果没有文件,它会设置默认值并在将对象返回到主应用程序之前保存它们。

public class AppSettings
{
    static string applicationPath = AppDomain.CurrentDomain.BaseDirectory;
    string settingsFile = applicationPath + "Settings.xml";
    internal string databaseName;

    public void Save()
    {
        try
        {
            using (StreamWriter writer = new StreamWriter(settingsFile))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(AppSettings));
                serializer.Serialize(writer, this);
            }
        }
        catch
        {
        }
    }

    public AppSettings Read()
    {
        if (File.Exists(settingsFile))
        {
            try
            {
                using (StreamReader reader = new StreamReader(settingsFile))
                {
                    XmlSerializer deserializer = new XmlSerializer(typeof(AppSettings));
                    return deserializer.Deserialize(reader) as AppSettings;
                }
            }
            catch
            {
                return GetDefaults();
            }
        }
        else
        {
            return GetDefaults();
        }

    }

    public AppSettings GetDefaults()
    {
        databaseName = "DBNAME";
        Save();
        return this;
    }
}

我没有收到任何错误,并且正在生成 Settings.xml 文件,但似乎没有保存 databaseName 对象。读取文件似乎也可以正常工作,但 databaseName 值为空。检查 xml 文件,除了 xml 元数据标签,我看不到任何数据,所以我假设我首先保存 AppSettings 对象的方法有误。

XML 文件内容:

<?xml version="1.0" encoding="utf-8"?>
<AppSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />

【问题讨论】:

标签: c# settings xmlserializer


【解决方案1】:

好的,我已经通过将我不一定想要的 databaseName 公开来让它工作,但没关系,我将把它包装在一个公开的 get 中;私人套装;属性。

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 2015-06-08
    • 2011-03-03
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2011-01-20
    • 2018-02-21
    • 1970-01-01
    相关资源
    最近更新 更多