場合によっては配列フィールドを含む固定長テキストベースのメッセージを解析(および構築)する必要があります。
例:これはオブジェクトだったら固定長フィールドの可変長配列によるメッセージの解析
PARTA LOTA 02SUBLOT1 SUBLOT2 03TEST1結果1 TEST2結果2 TEST3 RESULT3
、それは以下のロットオブジェクトを使用する場合があります。
品番(PARTA)
ロット番号(LOTA)
2つのサブロットオブジェクト(数量999と数量150とSUBLOT2とSUBLOT1)
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の属性デコレーションメソッドはすばらしいクリーンソリューションのように思えますが、私はそれを拡張することを検討していますが、そこではより良い解決策を見逃さないようにしたいと考えています。
質問タイトルの「固定長」を使用するのは間違いでした。可変長の配列要素を含む固定長文字列を作成するのはかなり難しいです。 .NET TextFieldParserクラスは、これらの種類のファイルを解析する優れたソリューションです。 –
あなたは*** FileHelpers ***を使って解決策を得ましたか? – Kiquenet