如何编写自定义 POCO 串行器/解串器?

2024-01-29

我想为 FIX 消息编写一个自定义 .NET 序列化器/反序列化器(与 XML 不同)。基本上该消息的编码为<tag>=<value>;<tag>=<value>;...

因此,示例可能是:

51=2;20=hello;31=2

我想使用我的 FIX Serializer 类,类似于使用 XMLSerializer 类来序列化/反序列化消息。我想我会编写一个 FIX 消息类,如下所示:

[Serializable]
public class FixMessage
{ 
     [FIXValuePair(51)]
     public double Price { get; set; }

     [FIXValuePair(20)]
     public string SomethingElse { get; set; }
}

有关如何编写这样的序列化器/反序列化器的任何指示吗?


使用反射,您可以循环遍历正在序列化的对象的属性,然后对于每个属性,您可以检查属性(再次使用反射)。最后,您将输出发送到流。

您的代码可能如下所示(简化):

public string Serialize(object o)
{
    string result = ""; // TODO: use string builder

    Type type = o.GeyType();

    foreach (var pi in type.GetProperties())
    {
        string name = pi.Name;
        string value = pi.GetValue(o, null).ToString();

        object[] attrs = pi.GetCustomAttributes(true);
        foreach (var attr in attrs)
        {
           var vp = attr as FIXValuePairAttribute;
           if (vp != null) name = vp.Name;
        }

        result += name + "=" + value + ";";
    }

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

如何编写自定义 POCO 串行器/解串器? 的相关文章

  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 使用.Net/C# 计算集合的频率分布

    是否有一种快速 简单的方法来使用 Linq 或其他方式计算 Net 集合的频率分布 例如 任意长的 List 包含许多重复项 遍历列表并计算 跟踪重复次数的巧妙方法是什么 查找列表中重复项的最简单方法是将其分组 如下所示 var dups
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 引用的程序集自动由 Visual Studio 替换

    我有 2 个项目 一个可移植类库和一个常规单元测试项目 在可移植类库中 我使用 NuGet 来引用 Microsoft BCL 可移植包 它附带 2 个程序集 System Threading Tasks dll and System Ru
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • Yii 嵌套设置到下拉菜单

    I m using Yii nested set behavior which helps me to keep my categories nested as seen here nevermind title rows they are
  • 如何为当前平台使用适当的颜色类别?

    我试图在 iOS 和 OS X 之间共享我的 Scene Kit 代码 但接受颜色 和图像 的 API 调用采用 UIColor UIImage 或 NSColor NSImage 具体取决于平台 如何在 Swift 中创建正确的类而不重复
  • Node 中数千个并发 http 请求

    我有一个包含数千个 URL 的列表 我想通过 http 请求进行健康检查 healt php 这是我的问题 我在节点中编写了一个应用程序 它以集中的方式发出请求 我使用一个变量来控制打开的并发连接数 300 即 一个接一个 每个请求都那么快
  • js 文件中的 php WordPress

    在 js 文件中 我需要获取 WordPress 主题的模板目录 即我需要获取以下值的返回值在 js 文件中 这个想法是这样的 var blogTemplateDir 如何才能实现这一目标 执行此操作的标准 Wordpress 方法是什么
  • 拥有多个步骤文件会打开多个浏览器

    问题 如果我有多个 Steps 文件 当我执行测试时 似乎无论我运行哪个测试 都会为每个 Steps 文件创建 WebDriver 每当我运行测试时 我都会看到一个看似随机的 Chrome 浏览器打开 为了查看 SpecFlow 和 Chr
  • 如何替换已在 Java 中打印在屏幕上的文本?

    我是 Java 新手 为了了解更多信息 我尝试制作一个时钟 它工作得很好 除了每次更改时它都会在新行上打印这一事实之外 我该如何制作才能用新时间替换已经打印出来的文本 public class test public static void
  • 当边缘用 jQuery 显示时停止拖动

    这是该网站的链接 战争游戏地图 http game creeight se 我有一个大的 jQuery 可拖动 div 将地图图像设置为背景 里面有一个较小的 div 上面有溢出 隐藏 重点是让用户像在maps google com 上一样
  • 绘制距原点 X 公里的路线

    跑步 步行距离显示 用户输入位置和距离 我可以以用户输入的距离为半径覆盖一个圆 以用户的位置为中心点 我可以在用户设置的距离处围绕原点设置四个基点 N S E W 并绘制到这些点的路线 这样 B 点距 A 点 100 公里 但映射的路线是
  • 如何优化以下代码

    颜色和尺寸是使用 django 中的 GET 方法从 URL 获取的 颜色和大小是复选框输入 并作为 view py 文件中的列表接收 https i stack imgur com abQ9Z png 我正在使用颜色和尺寸属性过滤我的产品
  • 在 R 中取消列出列,同时将字符(0)保留为空字符串

    我对 R 比较陌生 我有一个数据框 其中有一列存储为列表 我的专栏包含c Benzo Ferri or character 0 如果它是空的 我怎样才能将它们更改为简单的Benzo Ferri并用空字符串代替字符 0 例如 我无法df ge
  • Hyper-V W10(主机)Ubuntu 18.04(访客):为什么增强会话模式不起作用?

    我已使用 Hyper V 在 Windows 10 主机系统上安装了 Ubuntu 18 04 作为来宾系统 并且我想在全屏模式下使用来宾系统 据我所知 要调整屏幕大小 我需要在增强会话模式下运行来宾系统 如果我连接到访客系统 它既不允许我
  • python 错误 AttributeError: 'str' 对象没有属性 'setdefault'

    我正在尝试使用此命令运行 django 项目 python manage py runserver 8080 但每次我尝试运行时都会遇到这样的错误 Traceback most recent call last File manage py
  • 如何孵化PolyCollection实例?

    是否可以孵化 PolyCollection 实例 我想要从 fill Betweenx 返回一个 PolyCollection import matplotlib mlab as mlab from matplotlib pyplot im
  • Java,解析我知道为空的 JSON 对象

    我有一个 JSON 对象数组 为了解析这些数组并存储简单的数据类型值 我必须假设键名称并相应地存储它们 我还知道有时键的值将为空 例子 promotion null 我将如何解析这个 如果我尝试访问值为 null 的键 则会收到 JSONE
  • 异常 java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource

    我正在尝试将 spring 和 Hibernate 与 mysql 集成 我创建了一个简单的 java 项目和一个包含 3 个类的包 一个应用程序 context xml 文件和一个用于映射的 hbm xml 但执行后 我得到这个错误 Er
  • Ruby 递归函数

    我在从递归函数返回值时遇到问题 def ask question question print question answer STDIN gets chomp ask question question if answer empty r
  • 来自 Google Play 的 SSL 警告

    收到来自 google play 的警告 我如何处理 WebViewClient onReceivedSslError 处理程序的不安全实现的 SSL 错误处理程序漏洞 请尽快解决此漏洞并增加升级后的APK的版本号 为了正确处理SSL证书验
  • Redux / RTK:为一个切片创建增强器?

    在我的 Redux RTK 存储中的一个切片中 要使该切片完成其工作 我所需要做的就是使用以下命令创建一个实体适配器createEntityAdapter https redux toolkit js org api createEntit
  • 类变量、范围解析运算符和不同版本的 PHP

    我在 codepad org 中尝试了以下代码 class test const TEST testing 123 function test testing TEST echo self testing class new test 它返
  • 如何编写自定义 POCO 串行器/解串器?

    我想为 FIX 消息编写一个自定义 NET 序列化器 反序列化器 与 XML 不同 基本上该消息的编码为