drh*_*ris 5 .net c# app-config xml-serialization
目前,我们使用一个与XML序列化的巨型配置对象.这在大多数情况下都运行良好,但我们发现在断电和应用程序崩溃的情况下,文件可能会处于使其无法正确反序列化的状态,从而有效地破坏配置信息.
我想使用内置的app.config,但它似乎不容易支持自定义类.例如,使用XML序列化,我可以轻松地序列化通用list<ComplexClass>而无需额外的代码.它只是有效.似乎在使用app.config时,您必须提供大量信息和自定义类才能使用.此外,大多数"自定义配置"教程大约来自2007年,可能已经过时了.有没有人有关于在.NET 4.0中执行此操作的最新方法的信息?
另外,当应用程序出现问题时,由于配置不当,这是9/10次.App.config喜欢将用户可更改的设置存储在非常难以访问的位置,供不熟悉隐藏目录等的用户使用.有没有办法让一个位置存储配置文件,用户可以在出现问题时轻松向我们发送电子邮件?
或者,这是否比我记得它在2.0天的早期更容易?有关如何轻松执行自定义app.config信息的任何链接或快速示例都会很棒.
作为另一个例子,这是我想要序列化的一种对象类型的精简版本List<Alarm>,因为Alarms 的数量可以变化或为空.有没有类似的方法在app.config中存储这样的东西?
[Serializable]
public class Alarm
{
[Serializable]
public class AlarmSetting
{
public enum AlarmVariables { Concentration, RSquared }
public enum AlarmComparisons { LessThan, GreaterThan }
[Description("Which entity is being alarmed on.")]
public AlarmVariables Variable { get; set; }
[Description("Method of comparing the entity to the setpoint.")]
public AlarmComparisons Comparator { get; set; }
[Description("Value at which to alarm.")]
public Double Setpoint { get; set; }
}
public String Name { get; set; }
public Boolean Enabled { get; set; }
public String Parameter { get; set; }
public List<AlarmSetting> AlarmSettings { get; set; }
public System.Drawing.Color RowColor { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我建议远离任何类型的配置文件,而是使用某种类型的本地数据库,如sqlite或sql server express,它对应用程序崩溃更具弹性.
恕我直言,配置设置不应该是用户设置的默认容器.对我来说,配置文件用于确保应用程序在给定环境中运行.例如,定义连接字符串或轮询率或具有该性质的事物.
用户设置,尤其是经常更改的用户设置,需要更好的存储机制,例如本地数据库.当然,除非它是客户端/服务器应用程序.在这种情况下,这些设置应该在服务器本身,并且只有在应用程序必须在断开状态下工作时才在本地持久化.
您给出的示例之一是配置似乎是一个或多个警报的示例,它是属于数据库表的某些内容的完美示例.
| 归档时间: |
|
| 查看次数: |
3250 次 |
| 最近记录: |