我需要解析(並構建)固定長度的基於文本的消息,這些消息可能在某些情況下包含數組字段。
實施例:解析具有固定長度字段的可變長度數組的消息
A部分LOTA 02SUBLOT1 SUBLOT2 03TEST1 RESULT1 TEST2 RESULT2 TEST3 RESULT3
如果這是一個對象,它可能使用下面的地塊對象。
部件號(A部)
批號(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中的屬性裝飾方法看起來像是一個非常乾淨的解決方案,我正在考慮將其擴展,但我想確保我不會錯過更好的解決方案。
在問題標題中使用「固定長度」一定是錯誤的。很難讓固定長度的字符串包含可變數量的數組元素。 .NET TextFieldParser類是解析這些文件的絕佳解決方案。 –
您是否使用*** FileHelpers ***獲得解決方案? – Kiquenet