我需要解析(和构建)基于固定长度文本的消息,这些消息在某些情况下可能包含数组字段。
例子:
部分 LOTA 02SUBLOT1 SUBLOT2 03TEST1 RESULT1 TEST2 RESULT2 TEST3 RESULT3
如果这是一个对象,它可能会使用下面的 Lot 对象。
部件号 (PARTA)
批号 (LOTA)
2 个子批次对象的数组(SUBLOT1 的数量为 150,SUBLOT2 的数量为 999)
3 个测试结果的数组(TEST1 的结果为 1234.67890,...)
请注意,数组项的数量在消息中指定。
我希望使用我看到人们谈论的 FileHelpers 库,但它似乎不支持多个数组字段,其中有另一个字段指定数量,并且它不支持本身具有属性的字段类型[FixedLengthRecord()] 的。
这就是我希望能够做到的。请注意,字段长度 10 只是保持简单的一个工件。并非所有字段通常都定义为相同的长度。
[FixedLengthRecord()]
public class Lot
{
[FieldFixedLength(10)]
public string PartNumber { get; set; }
[FieldFixedLength(10)]
public string LotNumber { get; set; }
[FieldFixedLength(10)]
public SubLot[] SubLots { get; set; }
[FieldFixedLength(10)]
public Test[] Tests { get; set; }
}
[FixedLengthRecord()]
public class SubLot
{
[FieldFixedLength(10)]
public string SubLotNumber { get; set; }
[FieldFixedLength(10)]
public int Quantity { get; set; }
}
[FixedLengthRecord()]
public class Test
{
[FieldFixedLength(10)]
public string Description { get; set; }
[FieldFixedLength(10)]
public double Result { get; set; }
}
任何人都知道 FileHelpers 是否可以做到这一点?还有其他想法吗?我有许多不同的消息类型,所以我不想为每一种手动编码。FileHelpers 中的属性修饰方法似乎是一个非常干净的解决方案,我正在考虑扩展它,但我想确保我不会错过更好的解决方案。