限制属性的字符串长度

2024-04-03

当我试图找出一个更大的问题时出现了这个问题,为了简单起见,我省略了这个问题。

我必须用 C# 表示某种数据结构。它是一种用于与外部系统通信的协议。因此,它具有一系列具有预定义长度和整数(或其他更复杂的数据)的字符串。我们假设:

SYSTEM : four chars
APPLICATION : eight chars
ID : four-byte integer

现在,我首选的表示方式是使用字符串,所以

class Message
{
    string System {get; set; };      // four characters only!
    string Application {get; set; }; // eight chars
    int Id {get; set; };
}

问题是:我必须确保字符串的长度不超过预定义的长度。此外,这个标头实际上有数十个字段,这些字段会时不时地发生变化(我们仍在决定消息布局)。

如何描述这种结构的最佳方式?例如,我想使用带有数据描述的 XML 并使用反射来创建一个遵循实现的类(因为我需要以编程方式访问它)。

而且,就像我说的,还有更多麻烦。我有其他类型的数据类型限制字符/数字的数量......


对于初学者来说:整个长度问题。通过不使用自动属性,而是声明您自己的字段并以“老式”方式编写属性,可以轻松解决这个问题。然后,您可以在设置器中验证您的要求,并抛出异常或丢弃新值(如果它无效)。

对于不断变化的结构:如果不可能直接进入并更改类,您可以编写一个解决方案,该解决方案使用字典(好吧,也许您要存储的每种数据类型都有一个)将名称与值关联起来。添加某种类型的文件(可能是 XML),该文件描述允许的字段、它们的类型和验证要求。

但是,如果它只是因为您尚未决定最终结构而发生变化,我可能更愿意只更改类 - 如果您在部署应用程序时不需要这种动态结构,那么这似乎是一种浪费时间,因为您最终可能会花费更多的时间来编写动态内容,而不是更改类。

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

限制属性的字符串长度 的相关文章

  • Asp.net core默认路由

    简化版Startup code public void ConfigureServices IServiceCollection services services AddMvc public void Configure IApplica
  • 从实体获取单列

    如何从查询中获取单个列而不是整个对象 我可以这样做来获取整个对象 但我想要的只是名称 IList
  • 从 Invoke 方法获取 RETURN

    我正在尝试从另一个线程上的列表框项目中读取值 我尝试创建一种新方法来运行调用命令 我可以设法将命令发送到列表框 例如通过调用方法添加 但我似乎无法得到响应 我似乎无法获取该项目的值 我尝试了几种方法 一旦我将它从空变为字符串 事情就开始变得
  • 如何使用 C# 以编程方式编辑 Power BI Desktop 文档参数或数据源?

    我有一个在 Power BI Desktop 中内置的报告模板 并保存为 pbix 或 pbit 文件 该模板使用DirectQuery SQL数据库作为数据源 而服务器地址和数据库名称被提取到参数中 还有一个参数包含一个ReportId
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • make_shared<>() 中的 WKWYL 优化是否会给某些多线程应用程序带来惩罚?

    前几天我偶然看到这个非常有趣的演示 http channel9 msdn com Events GoingNative GoingNative 2012 STL11 Magic Secrets作者 Stephan T Lavavej 其中提
  • 提升mapped_file_source、对齐方式和页面大小

    我正在尝试在性能很重要的上下文中解析一些大小高达几百兆字节的文本文件 因此我使用 boostmapped file source 解析器期望源以空字节终止 因此我想检查文件大小是否是页面大小的精确倍数 如果是 则使用较慢的非内存映射方法 我
  • 如何在新窗口中打开图像或pdf文件?

    我有一个 gridview 它包含文件名和文件路径 图像和 pdf 格式文件 其中我使用了模板字段 在该字段下放置了 1 个图像按钮 单击该图像按钮 即 查看 按钮 时 我想在新窗口中打开所选文件 这是我的代码 protected void
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 将 2 个字节转换为整数

    我收到一个 2 个字节的端口号 最低有效字节在前 我想将其转换为整数 以便我可以使用它 我做了这个 char buf 2 Where the received bytes are char port 2 port 0 buf 1 port
  • 如何在 EF Core 2.1 中定义外键关系

    我的 DAL 使用 EF Core 2 1 这就是我的模型的样子 一名用户只能拥有一种角色 Role entity kind of master public class Role public int RoleId get set pub
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • 用数组或向量实现多维数组

    我想使用单个数组或向量实现多维数组 可以像通常的多维数组一样访问它 例如 a 1 2 3 我陷入困境的是如何实施 操作员 如果数组的维数为 1 则 a 1 应该返回位于索引 1 处的元素 但是如果维数大于一怎么办 对于嵌套向量 例如 3 维
  • 将日期时间显示为 MM/dd/yyyy HH:mm 格式 C#

    在数据库中 日期时间以 MM dd yyyy HH mm ss 格式存储 但是 我想以 MM dd yyyy HH mm 格式显示日期时间 我通过使用 String Format 进行了尝试 txtCampaignStartDate Tex
  • 不使用放置 new 返回的指针时的 C++ 严格别名

    这可能会导致未定义的行为吗 uint8 t storage 4 We assume storage is properly aligned here int32 t intPtr new void storage int32 t 4 I k
  • 时间:2019-03-17 标签:c#TimerStopConfusion

    我想通过单击按钮时更改文本颜色来将文本框文本设置为 闪烁 我可以让文本按照我想要的方式闪烁 但我希望它在闪烁几次后停止 我不知道如何在计时器触发几次后让它停止 这是我的代码 public Form1 InitializeComponent
  • 当 Verb="runas" 时设置 ProcessStartInfo.EnvironmentVariables

    我正在开发一个 C 应用程序 我需要创建变量并将其传递给新进程 我正在使用ProcessStartInfo EnvironmentVariables 新进程必须提升运行 因此我使用 Verb runas var startInfo new
  • 在 C 中使用 #define 没有任何价值

    If a define没有任何价值地使用 例如 define COMMAND SPI 默认值是0吗 不 它的评估结果为零 从字面上看 该符号被替换为空 然而 一旦你有了 define FOO 预处理器条件 ifdef FOO现在将是真的 另
  • MSVC编译器下使用最大成员初始化联合

    我正在尝试初始化一个LARGE INTEGER在 C 库中为 0 确切地说是 C 03 以前 初始化是 static LARGE INTEGER freq 0 在 MinGW 下它产生了一个警告 缺少成员 LARGE INTEGER Hig

随机推荐

  • 需要帮助调试缓慢的 scons 运行时

    我正在使用 scons 构建两个项目 一个项目效果很好 而另一个 更复杂 项目则非常令人沮丧 这是我在为第二个项目运行 scons 时看到的内容 S time scons scons Reading SConscript files lt
  • 在 OSX 上设置 PHPUnit

    尽管我确信其他人最终已经设法解决了这个问题 但我一直在关注各种文档 并且度过了一段艰难的时光 http www phpunit de manual current en installation html http www phpunit
  • 谷歌地图破坏 KML

    我已经创建了一些世界地区的 KML 文件 以便使用 Google 地图 API 进行显示 这一直工作正常 但最近有一个区域开始显示数据好像已损坏 你可以在这里明白我的意思 https drive google com file d 0B9u
  • jQuery 切换动画

    我有这个 jQuery document ready function panel hide login toggle function panel animate height 150 padding 20px 0 backgroundC
  • Bash 中常量的命名约定是什么?

    在 shell 脚本中 即使我使用Java or Python样式命名约定 我仍然不清楚命名常量 许多约定建议我使用 大写字母 和 下划线 一起命名常量 例如MY CONSTANT PI 但在Bash 这可能与环境变量 https stac
  • 使用 Yosup 时如何查找最新的 MD5、KEY 和 VERSION

    我发现在使用 yowsup 时出现 old version 错误时 向 Whatsapp 服务器注册有时会失败 Yosup 旧版本错误 https stackoverflow com questions 35877803 yowsup ol
  • GAE PHP 应用程序:无法找到包装器“gs”

    我正在编写一些非常简单的代码standardphp73 Google App 引擎环境 遵循此处的文档 https cloud google com appengine docs standard php googlestorage htt
  • Node-sass 不理解波浪号

    探索angular cli对于最近发布的 Angular2 的 RC1 我遇到了奇怪的问题 node sass在 sass 插件中angular cli不解析 在包名称之前抛出以下错误 Error File to import not fo
  • 非常简单的DNS服务器

    我有一台 Linux 服务器 有一个临时无线网络供客户端连接 连接后 我希望用户始终被重定向到它自己的 Web 服务器 无论他们输入什么 URL 最大的解决方案是设置一个完整的 DNS 服务器 使用 BIND 或等效服务器 但这似乎有点过头
  • QString 的运算符 <<

    为 QString 实现 std ostream operator lt lt std ostream stream const QString str stream lt lt str toAscii constData or strea
  • 浏览器也可以缓存嵌入的 Base64 图像吗?

    我想知道是否有任何现代浏览器实际上缓存了嵌入的图像 base64 字符串 这在不久的将来有可能吗 基于 W3C 或主要浏览器的官方文档 我不这么认为 因为你错过了Resource Identifier作为缓存图像的键 对于嵌入图像 您只有数
  • 使用 pandas 标记每组的每 N 行

    我有一个数据框 其中包含客户信息及其购买详细信息 我正在尝试添加一个新列 指示同一客户每进行第三次购买 下面给出的是数据框 customer name bill no date Mark 101 2018 10 01 Scott 102 2
  • input:not(:placeholder-shown) ~ 标签选择器不适用于自动填充

    我在输入字段中有浮动占位符 当我们未提供输入值时 占位符将出现在中心 如下图所示 电子邮件和密码为占位符 现在 当您向电子邮件提供值时 它确实如下所示 观察提供值后 电子邮件和密码已被提取 当浏览器开始从页面加载时保存的凭据 如用户名 电子
  • NSCalendar NSDateComponents weekofYear 返回 1,日期为 2014-12-31

    我想获得日期为 2014 12 31 的 weekofYear 但它总是返回 1 而不是 52 这是我的代码 NSCalendar calendar NSCalendar currentCalendar NSUInteger unitFla
  • 为什么 Google 的 pandas_datareader 不起作用?

    我尝试通过以下代码从谷歌财经获取数据 import pandas datareader data as wb import datetime as dt start dt datetime 2015 1 1 end dt datetime
  • nginx php 友好的 URL 重定向,不会干扰 index.php 导致 /index

    我尝试了很多不同的配置来启用任何以 php 结尾的请求的永久重定向 以重定向到不带 php 的自身 问题是 我无法获得将使用 index php 发送到任何目录的请求重定向到 而不是 index 的规则 Example 期望的行为 blog
  • 如何获取系统设备语言,swift iOS

    如何使用 swift iOS 获取系统设备语言 而不是应用程序语言 我没有遇到任何问题 我想从以下位置获取设备语言设置 gt 常规 gt 语言该用户将语言设置为 我尝试了下面的代码 let appLang Locale preferredL
  • 如何处理异步。护照和猫鼬的 findOrCreate 方法

    身份验证模块 Passport 需要 FindOrCreate 方法才能进行登录 我使用 mongoose 来保存我的用户 其架构如下 var UserSchema new Schema firstname String lastname
  • AspectJ Maven 插件无法编译我的项目

    我尝试使用aspectj maven插件使用aspectj编译器来编译项目 然后尝试将类打包到 war 文件中 不幸的是 它不适用于以下配置 pom xml
  • 限制属性的字符串长度

    当我试图找出一个更大的问题时出现了这个问题 为了简单起见 我省略了这个问题 我必须用 C 表示某种数据结构 它是一种用于与外部系统通信的协议 因此 它具有一系列具有预定义长度和整数 或其他更复杂的数据 的字符串 我们假设 SYSTEM fo