場合によっては配列フィールドを含む可能性のある固定長のテキストベースのメッセージを解析 (および構築) する必要があります。
例:
PARTA LOTA 02SUBLOT1 SUBLOT2 03TEST1 RESULT1 TEST2 RESULT2 TEST3 RESULT3
これがオブジェクトである場合、以下の Lot オブジェクトを使用する可能性があります。
部品番号 (PARTA)
ロット番号 (LOTA)
2 つのサブロット オブジェクトの配列 (数量 150 の SUBLOT1 と数量 999
の SUBLOT2) 3 つのテスト結果の配列 (結果 1234.67890 の TEST1、...)
配列項目の数に注意してください。メッセージで指定されています。
人々が話しているのを見た 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 の属性装飾メソッドは、非常にクリーンなソリューションのように思えます。私はそれを拡張することを検討していますが、より良いソリューションを見逃さないようにしたいと考えています。