C#应用程序设置未使用自定义类保存

C#应用程序设置未使用自定义类保存,c#,class,settings,appsettings,C#,Class,Settings,Appsettings,这是我要存储的类 [Serializable] [XmlRoot(ElementName = "Database", IsNullable = false, Namespace = "http://somesite.com")] class Database { [XmlAttribute(AttributeName = "Name")] public string Name { get; set; } [XmlAttribute(AttributeName

这是我要存储的类

 [Serializable]
[XmlRoot(ElementName = "Database", IsNullable = false, Namespace = "http://somesite.com")]

class Database
{
    [XmlAttribute(AttributeName = "Name")]   
    public string Name { get; set; }

    [XmlAttribute(AttributeName = "Provider")]
    public DatabaseProvider Provider { get; set; }

    [XmlAttribute(AttributeName = "Driver")]
    public string Driver { get; set; }

    [XmlElement("DatabaseEntry")]
    public List<DatabaseEntry> SavedEntries { get; set; }

    public Database()
    {
        SavedEntries = new List<DatabaseEntry>();
    }

    public Database(string type, string provider, string driver)
    {

        Name = type;
        Driver = driver;
        Provider = DatabaseProvider.SqlClient;

        Provider = SetProvider(provider);
        SavedEntries = new List<DatabaseEntry>();
    }

    private DatabaseProvider SetProvider(string provider)
    {
        switch (provider)
        {
            case "OleDb":
                return DatabaseProvider.OleDb;
            case "SqlClient":
                return DatabaseProvider.SqlClient;
            default:
                return DatabaseProvider.SqlClient;
        }
    }
}

[Serializable]
[XmlRoot(ElementName = "DatabaseEntry", IsNullable = false, Namespace = "http://somesite.com")]

class DatabaseEntry

{
    [XmlAttribute(AttributeName = "Name")]
    public string Name { get; set; }

    [XmlAttribute(AttributeName = "ConnectionString")]
    public string ConnectionString { get; set; }

    [XmlAttribute(AttributeName = "DsnString")]
    public string DsnString { get; set; }

    public DatabaseEntry()
    { }
}

我只是尝试将数据库类的实例存储到AppSettings中

您可以尝试将类
公开
-
XmlSerializer
对此很挑剔


然而,我似乎记得设置代码对类型转换器更感兴趣;你可以试着为它写一个
TypeConverter

你能把你用来保存类的代码发布为xmledited原始帖子来展示我是如何调用它的吗?我和你在同一时间编辑了它,很抱歉是的,我没有把它们公开。谢谢你,巴德!是您自己必须更改为Public的访问器,还是您也必须使用TypeConverter?@Vidar-根据Tom的评论,我认为只有
Public
做了。@Vidar-它可能嵌套在另一个非Public类型中?你能定义“aint working”-任何特定的错误消息吗?从Settings.Default.Foo返回的值总是空的-我不知道为什么-我有一个标记为[NonSerialized()]的字段,但我认为这不会有任何影响。
if (Settings.Default.SqlDatabase == null) 
   { 
      Settings.Default.SqlDatabase = CreateNewDatabase();
      Settings.Default.Save();
   }

private Database CreateNewDatabase()
{
    Database data = new Database("SQL Server", "SqlClient", "SQL Native Client");
    data.SavedEntries.Add(new DatabaseEntry()
    {
        Name = "Default",
        ConnectionString = @"Hello1",
        DsnString = @"Hello2"
    });
    return data;
}