目前,我们使用一个巨大的配置对象,该对象与 XML 序列化。这在大多数情况下都工作得很好,但我们发现,在断电和应用程序崩溃的情况下,文件可能会处于无法正确反序列化的状态,从而有效地损坏配置信息。
我想使用内置的app.config,但它似乎不容易支持自定义类。例如,通过 XML 序列化,我可以轻松序列化通用的list<ComplexClass>
没有额外的代码。它就是有效的。似乎在使用 app.config 时,您必须提供大量信息和自定义类才能使其工作。另外,大多数“自定义配置”教程都是 2007 年左右的,据我所知可能已经过时了。有谁知道在 .NET 4.0 中执行此操作的最新方法的信息吗?
另外,当应用程序出现问题时,9/10的情况是由于配置不当造成的。 App.config 喜欢将用户可更改的设置存储在一个非常难以访问的位置,对于不熟悉隐藏目录等的用户来说。有没有办法有一个位置来存储配置文件,用户可以在出现问题时轻松地向我们发送电子邮件?
或者,这一切比我记忆中的 2.0 早期容易吗?任何有关如何轻松执行自定义 app.config 信息的链接或快速示例都会很棒。
作为进一步的示例,这是我想要序列化的对象类型之一的精简版本List<Alarm>
,作为量Alarm
s 可以变化或为空。是否有类似的方法可以在 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; }
}
我建议放弃任何类型的配置文件,而是使用某种类型的本地数据库,例如sqlite http://www.sqlite.org/或 sql server express,它对应用程序崩溃的恢复能力要强得多。
恕我直言,配置设置不应该是默认容器user设置。对我来说,配置文件是为了确保应用程序在给定的环境中运行。例如,定义连接字符串或轮询率或类似性质的事物。
用户设置,尤其是经常更改的设置,需要更好的存储机制,例如本地数据库。当然,除非它是客户端/服务器应用程序。在这种情况下,这些设置应该在服务器本身上启动,并且仅当应用程序必须在断开连接的状态下工作时才在本地保留。
您给出的示例(配置一个或多个警报的示例之一)是属于数据库表的完美示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)