C#:将文件导入/导出/导出设置

时间:2008-09-17 21:48:52

标签: c# .net visual-studio visual-studio-2005

从应用内导入/导出应用内部设置到文件的最佳方法是什么?

我有Settings.settings文件,winform UI绑定到设置文件,我想导入/导出设置,类似于Visual Studio导入/导出设置功能。

5 个答案:

答案 0 :(得分:2)

如果您使用的是Settings.settings文件,则会保存到配置文件中。通过在更新设置后调用YourNamespace.Properties.Settings.Save(),它们将保存到配置文件中。

但是,我不知道“多组设置”是什么意思。如果设置是用户设置,则每个用户都有自己的一组设置。如果您为单个用户设置了多组设置,则可能不应使用.settings文件;相反,你会想要使用数据库。

答案 1 :(得分:0)

您可以使用绑定到表单的DataSet。你可以保存/恢复它。

答案 2 :(得分:0)

您可以使用部分,还是因特定原因而突破其他文件?

答案 3 :(得分:0)

您在谈论配置文件吗?

答案 4 :(得分:0)

我用过的一种经过验证的方法是设计一个设置容器类。 此容器类可以具有不同类型的设置类别的子类。 由于您通过属性名称引用了“设置”,因此它运行良好,因此如果将来发生更改,您将收到编译时错误。它也是可扩展的,因为您始终可以通过向单个设置类添加更多属性来创建新设置,并将默认值分配给将在应用程序的旧版本中不存在特定设置时将使用的属性的私有变量。保存新容器后,新设置也将保留。 另一个优点是XML的明显的人/计算机可读性,这对设置很有帮助。

要保存,请将容器对象序列化为XML数据,然后将数据写入文件。要加载,请从文件中读取数据并反序列化回设置容器类。

通过标准C#代码序列化:

public static string SerializeToXMLString(object ObjectToSerialize)
MemoryStream mem = new MemoryStream();          
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(ObjectToSerialize.GetType());
ser.Serialize(mem,ObjectToSerialize);                       
ASCIIEncoding ascii = new ASCIIEncoding();
return ascii.GetString(mem.ToArray());

通过标准C#代码反序列化:

public static object DeSerializeFromXMLString(System.Type TypeToDeserialize, string xmlString)
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(xmlString);
MemoryStream mem = new MemoryStream(bytes);         
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(TypeToDeserialize);
return ser.Deserialize(mem);

关于可序列化设置类的最后一件好事是因为它是一个对象,您可以使用IntelliSense快速导航到特定设置。

注意:在实例化设置容器类之后,应该将它设置为另一个静态管理类的静态属性(如果需要,可以将其命名为SettingsManager) 此管理类允许您从应用程序的任何位置访问您的设置(因为它是静态的),您还可以使用静态函数来处理类的加载和保存。