使用XMLSerializer在WPF应用程序中读取/保存设置文件[重复]

问题描述 投票:0回答:1

我有一个正在尝试实现加载和保存设置的功能的应用程序。我从另一个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值为null。正在检查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个回答
0
投票

好吧,我通过将databaseName公开给了我,而这并不是我想要的,但没关系,我将其包装在一个公开的文件中;私人套装;财产。

© www.soinside.com 2019 - 2024. All rights reserved.