小编cla*_*b86的帖子

使用 C#,如何将二进制数据的字节数组转换为对数据建模的自定义类型对象?

场景:我通过 HTTP 接收到原始二进制数据并将数据存储到一个字节数组中。我有描述二进制数据可以表示的各种字段的文档,但必须在运行时确定数据的实际含义。例如,如果表示发生错误的字节 = 1,则下一个字节的含义发生变化。

在 .NET 4 中使用 C#,我想创建一个或多个反映文档中描述的字段的类,然后使用二进制数据的字节数组以某种方式初始化这些类。我希望该解决方案能够最大限度地减少代码重复,并且要模块化和优雅。

我已经研究过创建 Serializable 类,但我不知道它是如何工作的,因为我从一个不是由我创建(因此没有序列化)的字节数组开始。

我还尝试使用泛型和反射来检索自定义类中包含的字段的大小和类型。然后我使用该信息从字节数组中动态切出数据并将其分配给相应的字段。然而,这种方法导致了很多丑陋、难以管理的代码。

任何有关为此问题设计可扩展的解耦解决方案的建议或指示将不胜感激。

编辑:包含反映规范中字段的字段的类示例

public class PriceHistoryResponse : BinaryResponse
{
    public List<Quote> quotes { get; set; }
    private CountData countData { get; set; }
    private EndingDelimiterSection endingDelimiterSection { get; set; }

    /* This code performs the logic needed to check for optional fields
    and to find the number of times that certain fields are repeated */
    public PriceHistoryResponse(byte[] responseBytes) : base(responseBytes)
    {
        countData = new CountData();
        ParseResponseSection(countData);

        quotes …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection binary serialization

5
推荐指数
1
解决办法
3366
查看次数

在Perl中,有没有$ {foo [bar]}可能是语法上有效的代码?

我正在阅读O'Reilly的Programming Perl,第3版,并且文本指出,不/$foo[bar]/应该使用模糊的搜索模式,而是应该使用/${foo[bar]}/Perl不会误认为[bar]字符类.我是否遗漏了某些内容,或者这两个语句在语法上是不正确的,因为它们试图使用裸字字符串索引到数组中?我已经在网上检查了这本书的勘误表,但在书中找不到任何关于这个错误的提法.是否有一些我忽略的场景,其中代码可能有效?

regex arrays perl

4
推荐指数
1
解决办法
152
查看次数

标签 统计

.net ×1

arrays ×1

binary ×1

c# ×1

perl ×1

reflection ×1

regex ×1

serialization ×1