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;
}