配置 XML 序列化的替代方案

2024-02-10

目前,我们使用一个巨大的配置对象,该对象与 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; }
}

我建议放弃任何类型的配置文件,而是使用某种类型的本地数据库,例如sqlite http://www.sqlite.org/或 sql server express,它对应用程序崩溃的恢复能力要强得多。

恕我直言,配置设置不应该是默认容器user设置。对我来说,配置文件是为了确保应用程序在给定的环境中运行。例如,定义连接字符串或轮询率或类似性质的事物。

用户设置,尤其是经常更改的设置,需要更好的存储机制,例如本地数据库。当然,除非它是客户端/服务器应用程序。在这种情况下,这些设置应该在服务器本身上启动,并且仅当应用程序必须在断开连接的状态下工作时才在本地保留。

您给出的示例(配置一个或多个警报的示例之一)是属于数据库表的完美示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

配置 XML 序列化的替代方案 的相关文章

随机推荐

  • Ruby on Rails foreach 与 Bootstrap3 行类

    我想 foreach 循环数据并使用每行 3 列的引导网格系统显示此数据 但是我需要多行来获取数据量 如下所示 div class row div class col md 4 DATA HERE div div class col md
  • 在mvc 4中使用wkhtmltopdf将Html中的图像转换为PDF

    我正在使用 wkhtmltopdf 将 html 转换为 pdf 我正在使用 mvc 4 我能够将 html 转换为 pdf 我遇到的唯一问题是图像无法渲染 应该出现图像的地方有一个小矩形 我的图像在数据库中 因此当我在控制器中获取 htm
  • Qt5 C++ 自动鼠标点击

    我正在尝试制作一个应用程序 其中鼠标移动到屏幕上的某些位置并自动单击左键 问题是我无法在 Qt 应用程序外部单击 因此我做了一个解决方法 使应用程序对鼠标单击透明并使用以下代码使其全屏显示 int x 800 int y 500 this
  • 如何在 Seaborn 热图单元格中显示多个注释

    我希望seaborn 热图在热图的每个单元格中显示多个值 为了清楚起见 这是我想要看到的手动示例 data np array 0 000000 0 000000 0 231049 0 000000 0 231049 0 000000 lab
  • 循环名称参考

    我有这个脚本 bin bash function contains local n array 1 local value 2 for item in array do item value return 0 done return 1 a
  • MySQL属性数据库

    我有一个属性数据库 每个属性值都存储在一个表中 并带有其父属性的 ID 在独立表中 我会编写一条 SQL 语句来提取数据 WHERE username AND domain 在属性表中 由于每个值都存储为单独的行 所以我不能这样做 我有一个
  • 使用 ASP.NET Razor MVC 仅包含部分视图的一部分

    我正在使用 ASP NET Razor MVC 并对我不想在每个页面上更新的常见内容使用部分视图 我使用以下语法来包含我的部分视图 Html Partial PartialView 在特定的部分视图上 我有两个 DIVS div class
  • Pytorch 进度表学习率

    我正在尝试重新实现一篇论文 该论文建议调整学习率 如下所示 学习率降低了factor耐心时期 10 的回归值改变值0 0001 我应该使用torch optim lr scheduler ReduceLROnPlateau 我不确定应该向每
  • 如何使用 CoreGraphics 用 alpha 颜色填充矩形?

    在我的drawRect方法中 我正在绘制一个PNG图像 最重要的是 我想绘制一个具有 20 alpha 颜色的矩形 如下所示 UIColor colorWithWhite 0 0 alpha 0 2 set UIRectFill rect
  • 如何使用spark/scala +代码+配置通过远程hive存储(s3 orc)在sparksql中加载文件

    intellij spark gt Hive Remote 存储在S3上 orc格式 无法通过 Spark scala 读取远程 Hive 表 能够读取表架构 但无法读取表 线程 main java lang IllegalArgument
  • 用于打印数字序列的 C 线程:偶数和奇数打印线程并行运行

    我是多线程编程的新手 我尝试使用并行运行的偶数和奇数打印线程来打印数字序列 执行时 代码进入死锁 谁能帮我解决这个问题 include
  • Android 应用程序在方向更改期间丢失数据

    我有一个从教程中复制的应用程序 用于捕获图像MediaStore ACTION IMAGE CAPTURE 当我在手机上运行该应用程序时 我遇到了一些奇怪的情况 即使我没有移动手机 相机应用程序本身也会在操作过程中多次翻转其方向 在返回教程
  • MediaPlayer - setAudioAttributes 无法正常工作

    我正在尝试创建警报 一切正常 但流类型始终是媒体 即使我使用STREAM ALARM since setStreamType已弃用 我正在使用setAudioAttributes相反 但它似乎不起作用 这是我的代码 class AlarmR
  • 规范与非规范终端输入

    我正在准备考试 我对 Unix 中规范与非规范输入 输出的工作方式感到困惑 例如 curses 我知道有一个缓冲区可以应用 行规则 来进行规范输入 这是否意味着非规范输入会绕过缓冲区 或者只是意味着不应用任何线路规则 此过程对于输入和输出操
  • android 库项目中的方法引用过多 - ClassNotFoundException

    我有一个库项目 我正在使用 AAR 文件在主 android 项目中使用它 我现在得到了著名的 65k 方法限制 这是我所期望的 但我几乎没有疑问 我已在主项目的 libs 文件夹中添加了 AAR 文件 并在 build gradle 中编
  • 使用 jackson-dataformat-xml 自定义根元素进行 XML 反序列化?

    所以我用杰克逊JSON 序列化 反序列化到目前为止已经成功 现在我也尝试使用它XML 序列化 反序列化使用它的jackson dataformat xml 2 3 0 jar 我用过 objectmapper reader Student
  • 绑定中 Datetime 对象的 StringFormat 返回 0 表示小时和分钟

    我使用 Datetime Now 创建一个 Datetime 对象 并将其作为类的属性 当我将其绑定到网格视图时
  • 如何告诉 Fluent NHibernate 不要映射类属性

    我有一个在 Fluent nhibernate 中映射的类 但我希望映射忽略其中一个类属性 使用下面的类和映射我收到此错误 以下类型不得用作代理 iMasterengine Data Model Calendar 方法 get HasEve
  • pickle.load() 在 Windows 中引发 EOFError

    代码是这样的 with open pickle f r as fhand obj pickle load fhand 这在 Linux 系统上工作正常 但在 Windows 上不行 它显示 EOFError 我必须使用rb模式使其在 Win
  • 配置 XML 序列化的替代方案

    目前 我们使用一个巨大的配置对象 该对象与 XML 序列化 这在大多数情况下都工作得很好 但我们发现 在断电和应用程序崩溃的情况下 文件可能会处于无法正确反序列化的状态 从而有效地损坏配置信息 我想使用内置的app config 但它似乎不