在哪里存储将在我的应用程序中使用的常量对象

2023-12-08

可以说我有一个item,其中有字段(属性)

  1. Location
  2. 平均值
  3. 可用性

我有10-15个items,我想要预定义其值,或者将其写入某处,然后加载到要使用的代码中。

哪一个是最佳实践?

这些将是常量,只是启动参数,在应用程序生命周期中不会被修改。


您可以序列化和反序列化List<Item>使用此帮助器类与 XML 文件进行交互:

public static class XmlHelper
{
    // Specifies whether XML attributes each appear on their own line
    const bool newLineOnAttributes = false;

    public static bool NewLineOnAttributes { get; set; }
    /// <summary>
    /// Serializes an object to an XML string, using the specified namespaces.
    /// </summary>
    public static string ToXml(object obj, XmlSerializerNamespaces ns)
    {
        Type T = obj.GetType();

        var xs = new XmlSerializer(T);
        var ws = new XmlWriterSettings { Indent = true, NewLineOnAttributes = newLineOnAttributes, OmitXmlDeclaration = true };

        var sb = new StringBuilder();
        using (XmlWriter writer = XmlWriter.Create(sb, ws))
        {
            xs.Serialize(writer, obj, ns);
        }
        return sb.ToString();
    }

    /// <summary>
    /// Serializes an object to an XML string.
    /// </summary>
    public static string ToXml(object obj)
    {
        var ns = new XmlSerializerNamespaces();
        ns.Add("", "");
        return ToXml(obj, ns);
    }

    /// <summary>
    /// Deserializes an object from an XML string.
    /// </summary>
    public static T FromXml<T>(string xml)
    {
        XmlSerializer xs = new XmlSerializer(typeof(T));
        using (StringReader sr = new StringReader(xml))
        {
            return (T)xs.Deserialize(sr);
        }
    }

    /// <summary>
    /// Serializes an object to an XML file.
    /// </summary>
    public static void ToXmlFile(Object obj, string filePath)
    {
        var xs = new XmlSerializer(obj.GetType());
        var ns = new XmlSerializerNamespaces();
        var ws = new XmlWriterSettings { Indent = true, NewLineOnAttributes = NewLineOnAttributes, OmitXmlDeclaration = true };
        ns.Add("", "");

        using (XmlWriter writer = XmlWriter.Create(filePath, ws))
        {
            xs.Serialize(writer, obj);
        }
    }

    /// <summary>
    /// Deserializes an object from an XML file.
    /// </summary>
    public static T FromXmlFile<T>(string filePath)
    {
        StreamReader sr = new StreamReader(filePath);
        try
        {
            var result = FromXml<T>(sr.ReadToEnd());
            return result;
        }
        catch (Exception e)
        {
            throw new Exception(e.InnerException.Message);
        }
        finally
        {
            sr.Close();
        }
    }
}

Usage:

XmlHelper.ToXmlFile(myList, @"c:\folder\file.xml");

var list = XmlHelper.FromXmlFile<List<Item>>(@"c:\folder\file.xml");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在哪里存储将在我的应用程序中使用的常量对象 的相关文章

随机推荐

  • 如何在php中获取选择框的多个选定值?

    我有一个 html 表单 其中有一个选择列表框 您可以从中选择多个值 因为它的 multiple 属性设置为 multiple 考虑表单方法是 GET 表单的html代码如下
  • 从父级中删除多个子级?

    我有一堆同名的元素 我试图用 onchange 函数同时删除它们 这是 JavaScript 甚至不确定removeChildren是否是一个真正的命令 我的元素是给onchange操作
  • 加载多个图像时回调的跨浏览器解决方案?

    我检查了其他问题 但它们都包含如何在加载一张特定图像时进行回调的信息 var img new Image img src images img png if img complete img onload function code to
  • 在android 3.0(蜂窝)中隐藏系统栏

    如何在android 3 0 honeycomb 中隐藏系统栏 无法删除系统栏 在未 root 的设备上 您可以进入 熄灯模式 该模式会将其变暗并仅显示按钮使用以下代码的点 ref View v findViewById R id view
  • 如何在 SQL 语句中组合 AND 和 OR

    我有这样的SQL语句 SELECT FROM table WHERE type 3 OR type 5 OR type 4 and table deleted 1 我读过可以使用括号来完成此操作 但我想知道这是否有效 SELECT FROM
  • 从不区分大小写的数组中删除重复值的最佳解决方案[重复]

    这个问题在这里已经有答案了 我找到了一些解决方案 但我无法决定使用哪一个 使用 php 的最紧凑 最有效的解决方案是什么array unique 函数在不区分大小写的数组上 Example input array green Green b
  • 如何在 Meteor 中存储日期和时间以进行范围查询?

    我的应用程序需要创建在浏览器中的 3 个不同时区中显示 startDate 的对象 日期还必须包括确切的时间 日期的存储方式应允许查询 提供 X 和 Y 之间的所有日期 并将其解析为 3 个时区 我的问题是我应该如何最好地保存 并随后检索
  • 修复 GCC 的 #includes <> (Code::Blocks)

    我正在使用一些为不同编译器 链接器编写的代码 它包括如下文件 include
  • 将图像从加载项导入图像管理器

    我们通过插件在 EA 中自动创建需求元素 但问题是我们无法将图像从目录导入到图像管理器并将超链接添加到需求元素注释 那么 企业架构师是否提供了任何API来将图像从目录导入到图像管理器并将超链接添加到需求元素注释中 EA 将图像存储在t im
  • Android 按钮有两个功能

    我需要一个具有两个功能的按钮 如果我点击它一次 它就会转到下一页 如果我按住该按钮 它将允许我编辑按钮上的文本 点击该按钮后可以转到下一页 但是如何实现第二个功能 该功能允许我在按住按钮时更改文本 有人知道吗 java代码 public c
  • Google Datastore 跨区域复制

    我们有一个在美国和欧盟托管的应用程序 为了获得出色的性能 我们将在两个位置托管一个数据存储实例 现在我们的问题是如何将数据从美国数据存储复制到欧盟数据存储 或者从技术角度来看 我们将数据存储在哪里并不重要 目前还没有多位置 GAE 应用程序
  • 如何在子视图中使用addChildViewController

    我想用addChildViewController in View 子视图数组的一个视图 但我不知道这一点 这是我的代码 for UIView subview in self view subviews if subview tag 1 C
  • 是什么原因导致此错误“无法写入应用程序 file.ini”

    我的应用程序是用delphi构建的 它可以在除Windows 7 64位机器之外的其他平台上完美运行 每次尝试关闭应用程序都会给我这个错误 无法写入应用程序文件 ini 这是我的关闭代码 procedure TfrmMain FormClo
  • SwiftUI - 在视图中显示从 Firebase 获取的数据?

    Firebase 我试图在 SwiftUI 视图中显示从 Firestore 获取的数据 但遇到问题 我从 Firebase 提取数据没有问题 但我无法按照我想要的方式显示数据 我使用 MVVM 架构 我的模型是这样的 struct Use
  • SwiftUI - 列表编辑模式 - 如何更改删除按钮标题?

    有没有办法在编辑列表时更改删除按钮标题 例子 struct ContentView View State private var users Paul Taylor Adele var body some View NavigationVi
  • 使用 Youtube API 获取用户电子邮件

    如何使用 Youtube API 获取经过身份验证的用户电子邮件 我尝试使用channels list GET https www googleapis com youtube v3 channels part brandingSettin
  • 如何在 pygame 中将旋转限制为设定的度数?

    我的问题与下面问题的答案相关 旋转一个矩形 如何将旋转限制在图中红色标记的区域 我尝试了各种方法但没有成功 代码始终将指针保留在其他区域 我修改后的代码如下 import pygame math base64 pygame init scr
  • 使用 htaccess 删除单个查询参数

    由于不值得在这里讨论的原因 Google 一直在为我的一个网站建立索引 其中 URL 中包含不必要的查询字符串 我想将我的 htaccess 文件修改为 301 将所有这些请求重定向到 URL 而无需查询字符串中不需要的部分 但保留查询字符
  • Bootstrap 表单:如何动态创建单选按钮的唯一名称

    这个问题是这个问题的后续问题one This JSfiddle体现了我想要实现的目标 Final Solution由 Scaramouche 提供 下面的函数动态地建立一个 列表 其中单选按钮每组四个 每个组都应该有一个唯一的名称 这使得可
  • 在哪里存储将在我的应用程序中使用的常量对象

    可以说我有一个item 其中有字段 属性 Location 平均值 可用性 我有10 15个items 我想要预定义其值 或者将其写入某处 然后加载到要使用的代码中 哪一个是最佳实践 这些将是常量 只是启动参数 在应用程序生命周期中不会被修