使整个应用程序可以访问数据(可能在运行时发生变化)的最佳方法是什么?

2023-12-07

在整个应用程序中访问数据的最佳方式是什么?在我的具体示例中,我将应用程序的设置从 XML 文件加载到 Settings-Object 的实例中,并且我不想将这些设置为绝对常量,因为用户应该能够更改这些设置(并查看效果) )无需重新启动程序。

现在,我需要在其他类的方法中使用某些(属性)设置,但这样它们就无法访问。那么我应该将设置存储在什么样的“对象”中呢?我认为每个需要在我的应用程序中进行设置的方法都必须查看 XML 本身并不是一件好事。另外,将设置实例传递到我使用的每个其他类中似乎太麻烦了。

提前致谢!


在 C# 中,我总是使用静态类来提供此功能。详细介绍了静态类here,但简单来说,它们只包含静态成员并且没有实例化——本质上它们是通过类名(和命名空间)访问的全局函数和变量。

这是一个简单的例子:

public static class Globals
{
    public static string Name { get; set; }
    public static int aNumber {get; set; }
    public static List<string> onlineMembers = new List<string>();

     static Globals()
     {
        Name = "starting name";
        aNumber = 5;
     }
}

请注意,我还使用静态初始化程序,保证在使用/调用任何成员或函数之前的某个时刻运行。

在程序的其他地方,您可以简单地说:

Console.WriteLine(Globals.Name);
Globals.onlineMembers.Add("Hogan");

为了响应评论而重申,静态对象仅“创建”一次。因此,您的应用程序在任何地方使用该对象都将来自同一位置。根据定义,它们是全球性的。要在多个地方使用该对象,只需引用对象名称和要访问的元素即可。

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

使整个应用程序可以访问数据(可能在运行时发生变化)的最佳方法是什么? 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 防止数组覆盖并创建新的数组索引

    我有一个文件 我需要将该文件的内容保存在我的 MySQL 数据库中 这是我用来解析文件的代码 lines file tmp filename data array if handle fopen tmp filename r FALSE w
  • 将时间戳(以微秒为单位)转换为 r 中的数据和时间

    我正在尝试将以微秒为单位的时间戳转换为 R 中的以下格式 年 月 日 时 分 秒 我尝试过不同的方法 但未能成功 按照我的代码 options digits 16 value 1521222492687300 as POSIXct valu
  • 如何在 Perl 的 system() 中检查管道中第一个程序的状态?

    perl e system crontab1 l print 按预期返回 1 程序 crontab1 不存在 perl e system crontab1 l grep blah print 返回 256 检查第一个 或两个 程序的状态的方
  • 如何自动缩放传单中的多边形?

    我的 geoJson 格式如下 statesData features push type Feature id AFG properties name Afghanistan geometry type Polygon coordinat
  • 是否可以阻止 JIT 优化方法调用?

    我们正在构建一个用于 Java 字节码程序的平均情况运行时分析的工具 其中一部分是测量实际运行时间 因此 我们将采用任意的 用户提供的方法 该方法可能有也可能没有结果 并且可能有也可能没有副作用 示例包括快速排序 阶乘 虚拟嵌套循环 并执行
  • 使用哈希值跟踪文件的唯一版本

    我将跟踪可能数百万个不同文件的不同版本 我的目的是对它们进行散列以确定我已经看到了该文件的特定版本 目前 我只使用 MD5 该产品仍在开发中 因此尚未处理过数百万个文件 这显然不够长 无法避免冲突 然而 这是我的问题 如果我使用两种不同的方
  • ffmpeg AVFrame 获取完整解码数据到 char*

    我在循环中获取帧并使用 ffmpeg 对其进行解码 得到 AVFrame 作为其结果 因此 我必须将帧的必要像素数据获取到 char 中 并作为回调函数的参数给出 那么如何生成这样的 char 数组呢 在互联网上我看到了一些例子 例如 fo
  • 每小时自动运行一次 php

    我使用的是共享 Windows 主机 其中允许通过 php 代码发送 120 封邮件 小时 我有一个 php 页面可以一次发送超过 200 封邮件 但我想每小时运行一次该页面 计划任务 我将拆分电子邮件 以 100 秒为单位 并希望每小时自
  • amp-iframe 内的 amp 页面上的 Disqus

    我尝试在 amp 文档上实现 Disqus 我的想法是使用amp iframe它加载一个仅包含 Disqus 的小文档 我用的是这个放大器框架
  • api.get_retweeter_ids() 实际上是如何工作的(Tweepy Python)?

    我对 twitter api 很陌生 我一直在尝试获取转发特定推文的每个人的 ID 列表 经过几次尝试后 我无法使用 api get retweeter ids 来获取每个 id 似乎总是能得到一些 我知道每个请求的限制为 100 个 但在
  • Javascript:如何避免在函数中添加新属性?

    我是一个JS新手 正在看书JavaScript 模式为了理解 我可以看到的代码片段之一 var myFunc function param myFunc cache 这表明函数体之外的任何人都可以添加新属性 这不会破坏封装吗 如果程序的其他
  • Delphi Firemonkey 跨平台 - 传递 Windows 句柄的通用方法

    我正沉浸在我的第二个适用于 Windows 和 OSX 的 Firemonkey 应用程序中 并慢慢地转换我的函数库以处理跨平台问题 我正在尝试创建一个通用的 SelectDirectory 函数 它将运行 Windows 或 OSX 平台
  • 如何告诉数据注释验证器也验证复杂的子属性?

    我可以在验证父对象时自动验证复杂的子对象并将结果包含在填充的结果中吗ICollection
  • 斯特林格的行为令人费解?

    Go 新手 请耐心等待 我一直在浏览 Tour of Go 页面 无意中发现了一些关于 Stringers 的令人费解的事情 考虑以下练习 https tour golang org methods 18 我最初的答案是实施 func th
  • 使用 React 更新 HTML5 视频上的源 URL

    我想更新 HTML5 视频元素中的源标签 以便当我单击按钮时 正在播放的任何内容都会切换到新视频 我有一个 Clip 组件 它返回一个 HTML5 视频元素 并通过 props 提供源 URL function Clip props ret
  • 使用jquery在密码字段中进行密码屏蔽

    如何在 Android 手机中进行密码屏蔽 例如当我们输入一个键时 它会显示一个键几秒钟并将其更改为 我尝试了中提到的插件使用js在手机中进行密码屏蔽这不是最佳的 还有 jsfiddlehttp jsfiddle net medopal X
  • 如何使用 RSpec 测试 STDIN

    好的 需要帮助进行测试 我想测试这个类是否收到字母 O 并且 当调用 move computer 方法时 会返回用户在 cli 上输入的内容 我的心理子处理器告诉我 这是一个简单的分配变量来保存 STDIN 上的随机人类输入 只是现在不明白
  • SQL Server 2012 中具有列和行总计的动态数据透视表

    我有表 RPT DailySalesSummary 其中包含 CalDate OrderID SalesAmount LocRecID 列 CalDate OrderID SalesAmount LocRecID 2016 12 01 R1
  • 在视图控制器segue之间传递数据[重复]

    这个问题在这里已经有答案了 我的第一个视图控制器 AllAthletes 是我所有核心数据实体的 uitableview 它在字幕样式表格单元格中显示实体 运动员 及其属性 例如名字等 当您单击视图单元格时 我希望此视图控制器传递所选实体的
  • 使整个应用程序可以访问数据(可能在运行时发生变化)的最佳方法是什么?

    在整个应用程序中访问数据的最佳方式是什么 在我的具体示例中 我将应用程序的设置从 XML 文件加载到 Settings Object 的实例中 并且我不想将这些设置为绝对常量 因为用户应该能够更改这些设置 并查看效果 无需重新启动程序 现在