代码之家  ›  专栏  ›  技术社区  ›  Greg

C:将设置导入/导出到文件中

  •  2
  • Greg  · 技术社区  · 16 年前

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

    我将settings.settings文件、winform ui绑定到设置文件,并希望导入/导出设置,类似于visual studio导入/导出设置功能。

    5 回复  |  直到 11 年前
        1
  •  2
  •   Austin Salonen    16 年前

    如果您使用的是settings.settings文件,它将保存到配置文件中。更新设置后,通过调用yournamespace.properties.settings.save(),它们将被保存到配置文件中。

    但是,我不知道你所说的“多组设置”是什么意思。如果这些设置是用户设置,那么每个用户都有自己的设置集。如果一个用户有多组设置,则可能不应使用.settings文件,而应使用数据库。

        2
  •  0
  •   Sunny Milenov    16 年前

    可以使用绑定到窗体的DataSet。你可以保存/恢复它。

        3
  •  0
  •   CodeRot    16 年前

    你可以只使用部分,或者你是因为特定的原因跳转到其他文件?

        4
  •  0
  •   Bob_Gneu    16 年前

    你在说配置文件吗?

        5
  •  0
  •   Evan Wondrasek    11 年前

    我使用的一种经过测试的方法是设计一个设置容器类。 这个容器类可以为不同类型的设置类别设置子类。 它工作得很好,因为您通过属性名引用您的“设置”,因此如果将来有什么变化,您将得到编译时错误。它也是可扩展的,因为您可以通过向单个设置类中添加更多属性来创建新的设置,并将默认值赋给将被使用的属性的私有变量,如果该特定设置不存在于旧版本的应用程序中。保存新容器后,新设置也将被持久化。 另一个优势是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);
    

    最后一个关于可序列化设置类的好东西是因为它是一个对象,您可以使用智能感知快速导航到特定的设置。

    注意:在实例化设置容器类之后,应该使它成为另一个静态管理类的静态属性(如果您想调用它,可以调用它) 这个管理类允许您从应用程序中的任何地方访问设置(因为它是静态的),并且还可以具有静态函数来处理类的加载和保存。